`
afeitech
  • 浏览: 35011 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用DAO工厂创建并管理dao实例

阅读更多

不用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("初始化业务逻辑组件出现异常......");
		}
	}
	
                //...................................................
	
                //下面就可以用了

}

 

分享到:
评论
3 楼 walter_hu 2010-10-22  
为何老是找不到文件?试了好多次 但是如果将文档换为properties就可以了
2 楼 walter_hu 2010-10-16  
受益匪浅,不过就是还是不很习惯,刚刚开始接触DAO
1 楼 yongtree 2008-09-09  
很漂亮啊,对我很有帮助,谢谢了。

相关推荐

    MVC三层架构+DAO工厂模式进行JAVA WEB开发

    - `DAOFactory`类:实现DAO的工厂方法,用于创建DAO实例。 - `View`目录:可能包含JSP文件,展示数据给用户。 - `配置文件`:如`db.properties`,用于配置数据库连接信息。 - `lib`目录:可能包含项目依赖的JAR库。 ...

    spring boot服务器dao层实例化.rar_dao实例化_idea 实例ID_spring boot_spring b

    在业务层或者控制器层,我们可以直接通过构造函数或`@Autowired`注解来获取DAO实例,然后调用其方法进行数据操作。 ```java @Service public class UserService { @Autowired private UserDao userDao; public ...

    基于DAO工厂模式的三层架构示例项目源码

    DAO工厂模式是一种创建型设计模式,它提供了一种创建DAO对象的方式,使得在业务逻辑层可以根据需要动态地创建相应的DAO实例,而无需直接硬编码DAO的创建过程。在本项目中,DAO工厂可能包含一个或多个方法,每个方法...

    web工程DAO实例

    总结来说,"web工程DAO实例"是一个展示如何在MVC架构下使用DAO设计模式与数据库交互的项目。通过理解DAO的工作原理和其在Web应用中的作用,开发者可以更好地组织代码,提高系统的可扩展性和可维护性。

    DAO设计模式(工厂+代理)

    工厂模式使得创建DAO实例变得更加灵活,可以根据需求动态切换不同的数据源。代理模式则提供了扩展DAO功能的途径,如事务管理和日志记录,同时保持了DAO的简洁性。这个例子中的"DAOFinal"可能包含了实现这些设计模式...

    DAO工厂留言板java jsp Web开发

    在这个项目中,DAO工厂则是用来创建DAO对象的类或接口,它简化了DAO实例的创建过程,提高了代码的可复用性和灵活性。 1. **DAO模式**:DAO模式的核心思想是创建一个接口,该接口定义了对数据库进行操作的方法,然后...

    Java中Dao模式实例

    DAO模式的核心思想是创建一个独立于数据源的接口,该接口定义了对数据的操作,而接口的实现则负责具体的数据库交互。这样,当需要更换数据存储方式或者优化数据库访问逻辑时,只需要修改实现类,而不影响调用它的...

    工厂模式dao模式操作数据库小例子

    4. 工厂类:工厂类负责根据需求创建DAO实例。例如,我们可以有一个DAOFactory,它有一个静态方法返回BankDAO实例。 5. 客户端代码:在主程序中,通过调用工厂类的方法获取DAO实例,然后通过DAO实例进行数据库操作。 ...

    DAO抽象工厂

    2. **实例化工厂方法**:创建工厂对象,然后调用其方法来获取DAO实例。 3. **依赖注入**:通过Spring等框架的IoC(Inversion of Control)容器管理DAO的生命周期,根据配置自动创建并注入到需要的地方。 **示例代码...

    JDBC-DAO实例

    **JDBC-DAO实例** 在Java开发中,JDBC(Java Database Connectivity)是连接数据库的标准API,它允许Java程序与各种数据库进行交互。DAO(Data Access Object)模式是一种设计模式,用于封装对数据库的所有访问,...

    小型web程序实例DAO

    这个"小型web程序实例DAO"是一个教学或实践项目,它演示了如何在Web应用程序中使用DAO来处理数据存取操作。下面将详细介绍DAO模式以及在Web程序中的应用。 DAO模式的核心思想是将业务逻辑与数据存取操作分离,这样...

    JSP DAO留言管理代码实例 笔记.rar

    本实例将介绍如何使用JSP和DAO模式来实现一个留言管理系统,从而达到显示逻辑与数据操作的分离,提高代码的可维护性。 首先,我们来看DAO设计模式的核心思想。DAO模式提供了一个接口,该接口定义了对特定数据源进行...

    DAO 设计模式经典实例

    通过这个实例,你可以看到DAO模式如何在实际项目中被应用,以及如何与其他设计模式(如工厂模式用于创建DAO实例)结合使用。理解并熟练运用DAO设计模式对于提升软件系统的质量至关重要。在实际开发中,可以根据项目...

    DAO涉及模式实例,源码

    此外,DAO模式常与工厂模式结合使用,创建DAO实例。通过DAOFactory,我们可以根据不同的数据库类型返回相应的DAO实现,这样可以方便地切换不同数据库。 ```java public interface UserDaoFactory { UserDao ...

    DAO.net经典实例

    首先,DAO(数据访问对象)的核心思想是创建一个接口或抽象类,定义了一系列操作数据库的方法,如查询、插入、更新和删除。在C#中,这些方法通常会使用ADO.NET库来实现,ADO.NET是.NET Framework提供的一个强大的...

    DAO编程实例

    通过DAODemo实例,我们不仅展示了如何利用DAO技术和MFC框架进行数据库操作,还深入理解了家庭物品管理软件的设计与实现。这不仅有助于IT专业人员掌握数据库访问技术,也为普通用户提供了便捷的家庭资产管理方案。...

    核心实例2 DAO存取Access数据库

    DAO(Data Access Objects)...这个核心实例将帮助你理解和掌握DAO在Access数据库操作中的应用,包括创建和管理TableDef,操作Recordset以及执行SQL语句。通过实践这些示例,你将能够熟练地利用DAO进行高效的数据存取。

    VB6 DAO数据库操作实例

    在VB6中,我们通常使用DAO的Database和Recordset对象来执行CRUD(创建、读取、更新、删除)操作。 创建数据库连接是使用DAO的第一步。在VB6中,我们可以通过以下代码创建一个Database对象: ```vb Dim db As DAO....

Global site tag (gtag.js) - Google Analytics