-
在dao模式下 的事务性问题5
在dao模式下 业务逻辑在 service层 比如一个service的方法要 调用几个dao的方法来实现业务逻辑的话 那怎么保证 事务性啊?2008年11月10日 19:11
4个答案 按时间排序 按投票排序
-
采纳的答案
这个要看你的框架是怎么实现的
目前有一种是在DAO层实现事务的管理,所有的数据控制在这一层。这样会出现你的问题,一个service里面调用多个DAO没有办法保证一致性。
另一种框架是控制事务在service层,这样就不会出现你的那种问题。
我觉得第一你可以尝试修改一下框架。按第二种方式去实现。
另一种办法就是对于调用多个DAO的service这部分自己去实现。设置不自动提交。
然后操作后手动提交。失败了就rollback。网上应该很容易可以找到这样的例子。2008年11月10日 19:36
-
把事务控制在service,那是比较好的实现方式。可以使用spring进行声明式事务配置,例如:
<!--定义了hibernate的事务管理器 --> <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 将proxy-target-class设为true,说明强制使用cglib代理 --> <aop:config proxy-target-class="true"> <aop:advisor pointcut="execution(* com.hnjk.gdpolice.service.impl.*Service*.*(..))" advice-ref="txAdvice" /> </aop:config> <!-- 基本事务定义,使用transactionManager作事务管理 --> <tx:advice id="txAdvice" transaction-manager="hibernateTransactionManager"> <tx:attributes> <tx:method name="get*" read-only="true" /> <tx:method name="find*" read-only="true" /> <tx:method name="select*" read-only="true" /> <tx:method name="query*" read-only="true" /> <tx:method name="pageQuery*" read-only="true" /> <tx:method name="*" /> </tx:attributes> </tx:advice>
2008年11月10日 20:24
相关推荐
在Java开发中,DAO模式通常与其他设计模式结合使用,如工厂模式(创建DAO实例)、策略模式(根据策略选择不同的数据访问方式)、单例模式(管理全局唯一的DAO实例)等,以进一步提升系统的灵活性和可维护性。在实际...
此外,Spring的事务管理也与DAO模式密切相关,可以统一处理事务的开始、提交、回滚等操作。 总结来说,DAO模式是企业级应用中不可或缺的设计模式,它简化了数据访问的复杂性,提高了代码的可维护性和可测试性。抽象...
通过Spring框架实现DAO模式,不仅可以有效地分离业务逻辑和数据访问逻辑,还能借助Spring的事务管理和依赖注入等特性,大大提升代码的可维护性和扩展性。此外,结合AOP的使用,可以使代码更加清晰,减少冗余,提高...
例如,STRUTS框架中的数据持久化可以通过DAO模式来实现,以降低组件间的耦合度,提高代码的可维护性和可扩展性。 DAO模式的组成部分通常包括以下几点: 1. **数据访问接口**:这是DAO的核心,定义了对数据源进行...
DAO模式的核心思想是将数据访问层与业务逻辑层解耦,使得业务代码不直接与数据库交互,而是通过DAO接口进行数据操作,从而提高代码的可测试性和可维护性。 在Java中,DAO模式通常包含以下几个关键组件: 1. **数据...
DAO模式在Java EE应用中尤其常见,它通过定义一组接口来抽象数据库操作,然后由具体的实现类来完成这些操作。 一、DAO模式的组成 1. **DAO接口**:定义了一组针对特定数据对象的操作,比如增删查改(CRUD)方法。...
总的来说,工厂模式和DAO模式的结合使用能够提高代码的可读性、可扩展性和可维护性,是Java开发中处理数据库操作的重要实践。通过这个小例子,初学者可以深入理解这两种模式的精髓,并将其应用到实际项目中。
在实际项目中,比如Spring框架,提供了对DAO模式的内置支持,可以通过Spring的`@Repository`注解标记DAO实现类,方便地进行依赖注入和事务管理。 7. **总结** DAO设计模式是软件开发中处理数据库操作的一种常见...
通过上述方式,DAO模式不仅实现了业务逻辑与数据访问的分离,还提高了代码的可重用性和可扩展性,使得应用程序更容易适应不断变化的数据库环境和技术需求。在实际项目开发中,结合使用DAO模式和其他设计模式(如工厂...
在给定的"Mvc+DAO模式例子"压缩包中,可能包含了实现了MVC模式和DAO模式的Java源代码,包括Servlet、JSP、JavaBean以及对应的DAO类。这些文件可以作为学习和理解这两种模式的实例,通过分析和运行代码,可以帮助初学...
在实际开发中,你还需要关注错误处理、事务管理、安全性等方面的问题,以确保应用的稳定性和安全性。此外,理解并熟练运用DAO和MVC模式,对于成为一名优秀的Java Web开发者至关重要,它们能帮助你构建出更健壮、易于...
DAO模式在实际项目中广泛应用,尤其在大型系统中,能够提高代码的可读性、可维护性和可扩展性。例如,当我们需要更换数据库系统(如从MySQL切换到Oracle),只需要修改DAO实现,而不需要改动大量的业务代码。 在...
本教程将逐步介绍如何搭建一个基于DAO模式的Java项目。 1. **DAO模式的概念** DAO模式的核心思想是创建一个接口或抽象类,定义数据访问的方法,然后提供一个具体的实现类来完成实际的数据操作。这样可以将数据访问...
在本例中,我们将探讨如何使用DAO模式来实现宠物数据的更新功能。 首先,DAO模式的基本结构包括以下几个部分: 1. **实体类(Entity)**:在这里,我们可以创建一个`Pet`类,它代表宠物对象,包含宠物的相关属性如...
在这个"Mysql DAO模式上机练习 参考作业"中,我们可以深入学习如何在Java环境下使用DAO模式来操作MySQL数据库。 首先,`entity`目录可能包含了项目中的实体类(Entity Classes)。在DAO模式中,实体类是用来映射...
DAO(Data Access Object)设计模式是一种在软件工程中常见的用于处理数据访问的模式,它将业务逻辑和数据访问逻辑分离,使得系统更加模块化,提高了代码的可复用性和可测试性。在这个“DAO设计模式(工厂+代理)”...
事务管理是DAO模式中的一个重要方面,合理的事务管理策略能够确保数据的一致性和完整性。无论是采用DAO级别的事务管理还是服务层级别的事务管理,都需要根据实际应用场景来选择合适的策略。此外,使用JDBC进行事务...
#### 四、DAO模式中的事务管理 在传统的DAO设计模式中,事务的管理往往是由业务逻辑层负责的。然而,这种做法存在一定的局限性。当业务逻辑层需要频繁地调用不同的DAO方法时,每个DAO方法都需要独立地开启和提交...
DAO模式的核心思想是通过创建一个独立于具体数据库操作的对象(即DAO),来封装对数据库的访问细节,这样可以使得业务代码不直接依赖于具体的数据库API,提高了代码的可测试性和可维护性。 在现代Java应用中,尤其...
复习DAO模式时,需要理解其设计原则,如单一职责、开闭原则,并掌握如何在实际项目中应用DAO。 最后是Oracle数据库。Oracle提供了丰富的功能,如表、视图、索引、存储过程、触发器等,支持复杂的SQL查询。复习...