不用Spring的时候,我们常用DAO工厂来创建并管理dao实例。
daoContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<daoContect>
<dao id="userDao" class="com.afei.dao.impl.UserDaoHibernate"></dao>
<dao id="messageDao" class="com.afei.dao.impl.MessageDaoHibernate"></dao>
</daoContect>
DaoFactory.java
public class DaoFactory {
//建立一个DAO实例的缓冲池
private Map<String,Object> daoMap=new HashMap<String,Object>();
//建立DAO工厂实例:他是一个单态模式,所以是静态的实例
private static DaoFactory df;
//初始化DAO工厂
//构造器私有才能阻止系统创建多个DaoFactory实例
private DaoFactory(String path)throws Exception{
//采用dom4j来读取配置文件,获得Document对象
Document doc=new SAXReader().read(new File(path+"\\daoContext.xml"));
Element root=doc.getRootElement();//由Document获得根元素
List el=root.elements();//由根元素获得所有元素
for(Iterator it=el.iterator();it.hasNext();){
Element em=(Element)it.next();
String id=em.attributeValue("id");
String impl=em.attributeValue("class");//得到class表示字符串
Class implClass=Class.forName(impl);// 把该字符串变成一个具体的类
Object obj=implClass.newInstance();//生成该类的对象
daoMap.put(id, obj);//把这个对象放到DAO缓冲池里
}
}
//提供一个普通的入口方法,用以返回一个DaoFactory实例
public static DaoFactory instance(String path)throws Exception{
if(df==null){
df=new DaoFactory(path);
}
return df;
}
//获取具体的DAO实例
public Object getDao(String id){
return daoMap.get(id);
}
}
MessageManagerImpl.java
public class MessageManagerImpl implements MessageManager {
private UserDao userDao;
private MessageDao messageDao;
//构造方法:负责初始化DAO组件
public MessageManagerImpl()throws MessageException{
try {
userDao=(UserDao)DaoFactory.instance(null).getDao("userDao");
messageDao=(MessageDao)DaoFactory.instance(null).getDao("messageDao");
} catch (Exception e) {
e.printStackTrace();
throw new MessageException("初始化业务逻辑组件出现异常......");
}
}
//...................................................
//下面就可以用了
}
分享到:
相关推荐
一个Java Dao模式的的具体实例,详细描述了Dao的在实际项目中的开发应用
可以把dao层的id等内容实例化至数据库
DAO编程实例DAO编程实例DAO编程实例
遵循MVC模式,分层比较严谨,实现DAO操作数据库
JSP DAO留言管理代码实例 笔记,结合DAO设计模式,通过JSP DAO修改之前的留言管理程序,通过本程序修改之后,可以发现达到了显示与数据操作分离的目的,程序代码更易于维护.
DAO涉及模式实例,DAO涉及模式实例,DAO涉及模式实例
Spring DAO入门实例入门实例DOC,经典入门
jsp dao 留言管理实例 web开发
当然是用共通的DAO你需要对结果转型,转成你需要的bean,但这也比写那么多DAO强多了,你可以放下包袱,只关注你的业务逻辑。 如果你真能只用一个dao解决,那么祝贺你,你得到了一个虚拟数据层(高度抽象的数据接口)...
DAO.net经典实例,附数据库,有详细注释
java数据库jdbc,中的DAO模式案例
DAO 设计模式经典实例
JSP直接获取dao层数据实例 java mysql jsp dao
核心实例2 DAO存取Access数据库
用DAO模式实现的用户登录系统。所用数据库MySql(用户名和密码可以自己创建和设置),功能完整。
VisualBasic6.0_VB6 DAO数据库操作实例 比较全面 适合初学者
开发的一个小型web示例,含有DAO的示例
计算机软件-商业源码-实例124-利用DAO创建数据库.zip
使用Annotation并对DAO层封装具有分页功能的S2SH整合实例
spring dao patternspring dao patternspring dao patternspring dao pattern