-
关于dao的单例5
想问下dao单例问题, 如果系统全局只有一个dao 里面的方法都是通过泛型方式声明的方便service调用。这样写会不会有问题?
dao里面没有任何属性,不存在线程共享的问题。但是我担心session会不会混乱。比如之前一个用户提交数据,session关闭,紧接着又一个用户删除数据却拿不到session。请大牛帮忙解答下!!!
我说的是系统全局只有一个单例模式的dao。 并不是一个service对应一个dao那种的!!!2011年10月21日 13:41
3个答案 按时间排序 按投票排序
-
像你说的这样,其实根本都不需要用单例,用静态方法就全部解决了。
但其实Spring的IOC是让Service注入DAO的接口,这样达到松耦合。不管是单例和静态方法都不能很好的IOC。2011年10月22日 11:14
-
但是要注意的是,假如你的dao里面有多个同步过的方法(比如F1,F2),那么在线程A调用F1的时候,线程B是不能调用到F2的,会被阻塞。影响性能。
2011年10月21日 13:59
-
你把session放在threadLocal里面管理,不会出现这种情况。
session里面是存放的connection,而这个connection是从连接池拿出来的,用完了放回连接池,需要的时候从里面提取。2011年10月21日 13:57
相关推荐
并不是说service或dao一定是单例,标准同第三点所讲的。有时候,service或dao中也包含了可改变的状态,同时执行方法也依赖该状态。如果使用单例模式,那么就会出现隐藏的BUG,而并发的BUG通常很难重现和查找。 单例...
在Java开发中,DAO模式通常与其他设计模式结合使用,如工厂模式(创建DAO实例)、策略模式(根据策略选择不同的数据访问方式)、单例模式(管理全局唯一的DAO实例)等,以进一步提升系统的灵活性和可维护性。...
开发者可以继承BaseDao,然后根据具体业务需求实现具体的DAO(Data Access Object)类。BaseDao通常会依赖于数据库连接池来获取和释放连接,这样在进行数据库操作时,可以通过BaseDao的接口间接地使用连接池,既方便...
- **DAO工厂**:创建DAO实例的工厂类,用于解耦DAO的创建过程,通常通过单例模式实现。 - **DAO接口**:定义数据操作的方法,如增删查改等。 - **DAO实现类**:具体实现DAO接口中的方法,与数据库交互。 - **数据...
这个"dao.rar"压缩包文件提供了关于DAO模式在实际应用中的详细示例,特别是如何进行分层处理以及实现增删改查(CRUD)功能。下面我们将深入探讨DAO模式及其在分层架构中的应用,以及如何执行基本的数据库操作。 DAO...
3. **DAO工厂**:负责创建和管理DAO实例,通常遵循单例模式,提供线程安全的DAO对象。 4. **DAO异常处理**:封装了数据访问过程中可能出现的异常,提供统一的错误处理机制。 5. **事务管理器**:协调事务的开始、...
标题中的"dao_thread.zip_dao"暗示了这是一个关于数据库访问对象(DAO)在多线程环境中的应用示例。在编程领域,DAO模式是用于在应用程序和数据库之间提供抽象层,使得数据操作独立于具体的数据库系统。而多线程则是...
Java源代码 一个简单的通用DAO实现 ...//获得一个全局类单例的DAO实例 dao.save(pojo); 你也可以生成一个不被DAOFactory(工厂)缓存的即用即弃的DAO实例: DAO dao = DAOFactory.getInstance(POJO.class);
- **静态内部类和单例模式**:为了防止多个线程同时访问同一DAO实例,可以采用静态内部类实现单例模式,确保线程安全。静态内部类保证了线程安全的同时,也延迟了单例的初始化。 - **线程局部变量**:使用...
8. **设计模式的应用**: DAO模式本身就是一个设计模式,此外,可能还会结合单例模式、工厂模式等其他设计模式来优化代码结构。 其次,www.pudn.com.txt 文件可能是提供下载资源的网站链接或相关说明,例如,它可能...
package com.icss.zf.dao.jdbc; import java.io.InputStream; import java.util.Properties; public class Env extends Properties { private static final long serialVersionUID = 1L; private static Env ...
8. **设计模式**:除了DAO模式,还可以结合工厂模式(用于创建DAO实例)、单例模式(管理数据库连接)或策略模式(用于不同数据库操作策略)等设计模式,提升代码的结构和复用性。 通过这些技术,我们可以构建一个...
DAO模式常常与其他设计模式结合使用,比如工厂模式用于创建DAO实例,单例模式控制DAO对象的唯一性,策略模式用于动态选择不同的数据访问策略等。 综上所述,DAO设计模式是Web开发中的一种重要实践,它有助于构建...
在Java Web项目中,数据库连接的DAO层通常会用到工厂模式来创建不同类型的数据库操作对象。 **3. 动态代理** 动态代理是Java提供的一种机制,可以在运行时动态创建代理对象,实现代理接口的方法。它主要应用于AOP...
6. **数据源配置**:支持多种数据源,可以根据需求选择不同的数据库连接方式,如单例、连接池等。 7. **批处理操作**:对于批量数据操作,iBATIS提供了批处理API,可以大大提高效率。 8. **异常处理**:iBATIS将...
2.DAO层的实现可以使用设计模式,例如工厂模式、单例模式等。 3.DAO层的实现可以使用Spring或其他框架来简化数据库访问和操作。 四、DAO层的优点 1.提高系统的可维护性:DAO层可以使得系统的可维护性提高,提高...
在实际开发中,为了进一步提高代码的复用性和可维护性,还可以考虑引入设计模式(如工厂模式、单例模式等)和框架(如Spring MVC),以及使用IDE(集成开发环境)进行代码管理和调试。此外,良好的注释和文档也是...
DAO(Data Access Object)设计模式是软件开发中用于处理数据访问的一...在实际开发过程中,结合其他设计模式(如策略模式、单例模式等)和现代持久层框架,DAO模式能够发挥更大的效能,帮助构建高效、稳定的J2EE应用。
DAO(Data Access Object)设计模式是软件开发中用于处理数据访问的一种常见模式,尤其是在Java应用程序中...在实际项目中,结合其他设计模式和最佳实践,如工厂模式、单例模式以及依赖注入,可以进一步优化DAO的实现。
10. **设计模式**:讲解SOA的基本原理和Web设计模式,学习常见的设计模式,如单例模式、适配器模式、工厂模式、抽象工厂模式和观察者模式,以提高软件的可重用性。 11. **SOA架构**:深入理解面向服务的开发模型,...