0 0

在dao模式下 的事务性问题5

在dao模式下 业务逻辑在 service层 比如一个service的方法要 调用几个dao的方法来实现业务逻辑的话 那怎么保证 事务性啊?
DAO 
2008年11月10日 19:11

4个答案 按时间排序 按投票排序

0 0

采纳的答案

这个要看你的框架是怎么实现的
目前有一种是在DAO层实现事务的管理,所有的数据控制在这一层。这样会出现你的问题,一个service里面调用多个DAO没有办法保证一致性。
另一种框架是控制事务在service层,这样就不会出现你的那种问题。

我觉得第一你可以尝试修改一下框架。按第二种方式去实现。
另一种办法就是对于调用多个DAO的service这部分自己去实现。设置不自动提交。
然后操作后手动提交。失败了就rollback。网上应该很容易可以找到这样的例子。

2008年11月10日 19:36
0 0

事务控制最好在service层。

dao层只是实现最原子的数据库操作,不要带有业务逻辑,业务逻辑都封装在service层。

2008年11月10日 21:35
0 0

把事务控制在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
0 0

用Spring来配置管理事物吧. 直接配置在Service中;

2008年11月10日 19:49

相关推荐

    DAO设计模式 DAO 设计模式 JAVA设计模式

    在Java开发中,DAO模式通常与其他设计模式结合使用,如工厂模式(创建DAO实例)、策略模式(根据策略选择不同的数据访问方式)、单例模式(管理全局唯一的DAO实例)等,以进一步提升系统的灵活性和可维护性。在实际...

    《J2EE核心模式》(DAO模式)

    此外,Spring的事务管理也与DAO模式密切相关,可以统一处理事务的开始、提交、回滚等操作。 总结来说,DAO模式是企业级应用中不可或缺的设计模式,它简化了数据访问的复杂性,提高了代码的可维护性和可测试性。抽象...

    使用Spring实现DAO模式

    通过Spring框架实现DAO模式,不仅可以有效地分离业务逻辑和数据访问逻辑,还能借助Spring的事务管理和依赖注入等特性,大大提升代码的可维护性和扩展性。此外,结合AOP的使用,可以使代码更加清晰,减少冗余,提高...

    初步认识JAVA DAO设计模式

    例如,STRUTS框架中的数据持久化可以通过DAO模式来实现,以降低组件间的耦合度,提高代码的可维护性和可扩展性。 DAO模式的组成部分通常包括以下几点: 1. **数据访问接口**:这是DAO的核心,定义了对数据源进行...

    java DAO模式实现 附源码

    DAO模式的核心思想是将数据访问层与业务逻辑层解耦,使得业务代码不直接与数据库交互,而是通过DAO接口进行数据操作,从而提高代码的可测试性和可维护性。 在Java中,DAO模式通常包含以下几个关键组件: 1. **数据...

    DAO开发模式介绍.......

    DAO模式在Java EE应用中尤其常见,它通过定义一组接口来抽象数据库操作,然后由具体的实现类来完成这些操作。 一、DAO模式的组成 1. **DAO接口**:定义了一组针对特定数据对象的操作,比如增删查改(CRUD)方法。...

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

    总的来说,工厂模式和DAO模式的结合使用能够提高代码的可读性、可扩展性和可维护性,是Java开发中处理数据库操作的重要实践。通过这个小例子,初学者可以深入理解这两种模式的精髓,并将其应用到实际项目中。

    Dao设计模式教程

    在实际项目中,比如Spring框架,提供了对DAO模式的内置支持,可以通过Spring的`@Repository`注解标记DAO实现类,方便地进行依赖注入和事务管理。 7. **总结** DAO设计模式是软件开发中处理数据库操作的一种常见...

    JAVA DAO模式浅析.pdf

    通过上述方式,DAO模式不仅实现了业务逻辑与数据访问的分离,还提高了代码的可重用性和可扩展性,使得应用程序更容易适应不断变化的数据库环境和技术需求。在实际项目开发中,结合使用DAO模式和其他设计模式(如工厂...

    Mvc+DAO模式例子

    在给定的"Mvc+DAO模式例子"压缩包中,可能包含了实现了MVC模式和DAO模式的Java源代码,包括Servlet、JSP、JavaBean以及对应的DAO类。这些文件可以作为学习和理解这两种模式的实例,通过分析和运行代码,可以帮助初学...

    Java Web实验六 采用 DAO 模式实现对数据库的访问方法, 利用 Servlet 实现 MVC 模式

    在实际开发中,你还需要关注错误处理、事务管理、安全性等方面的问题,以确保应用的稳定性和安全性。此外,理解并熟练运用DAO和MVC模式,对于成为一名优秀的Java Web开发者至关重要,它们能帮助你构建出更健壮、易于...

    DAO设计模式辅助资料

    DAO模式在实际项目中广泛应用,尤其在大型系统中,能够提高代码的可读性、可维护性和可扩展性。例如,当我们需要更换数据库系统(如从MySQL切换到Oracle),只需要修改DAO实现,而不需要改动大量的业务代码。 在...

    java dao模式搭建教程

    本教程将逐步介绍如何搭建一个基于DAO模式的Java项目。 1. **DAO模式的概念** DAO模式的核心思想是创建一个接口或抽象类,定义数据访问的方法,然后提供一个具体的实现类来完成实际的数据操作。这样可以将数据访问...

    使用DAO模式实现宠物数据更新

    在本例中,我们将探讨如何使用DAO模式来实现宠物数据的更新功能。 首先,DAO模式的基本结构包括以下几个部分: 1. **实体类(Entity)**:在这里,我们可以创建一个`Pet`类,它代表宠物对象,包含宠物的相关属性如...

    Mysql DAO模式上机练习 参考作业

    在这个"Mysql DAO模式上机练习 参考作业"中,我们可以深入学习如何在Java环境下使用DAO模式来操作MySQL数据库。 首先,`entity`目录可能包含了项目中的实体类(Entity Classes)。在DAO模式中,实体类是用来映射...

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

    DAO(Data Access Object)设计模式是一种在软件工程中常见的用于处理数据访问的模式,它将业务逻辑和数据访问逻辑分离,使得系统更加模块化,提高了代码的可复用性和可测试性。在这个“DAO设计模式(工厂+代理)”...

    DAO设计模式DAO设计模式

    事务管理是DAO模式中的一个重要方面,合理的事务管理策略能够确保数据的一致性和完整性。无论是采用DAO级别的事务管理还是服务层级别的事务管理,都需要根据实际应用场景来选择合适的策略。此外,使用JDBC进行事务...

    dao设计模式DAO 设计模式之事务界定疯.pdf

    #### 四、DAO模式中的事务管理 在传统的DAO设计模式中,事务的管理往往是由业务逻辑层负责的。然而,这种做法存在一定的局限性。当业务逻辑层需要频繁地调用不同的DAO方法时,每个DAO方法都需要独立地开启和提交...

    DAO模式设计

    DAO模式的核心思想是通过创建一个独立于具体数据库操作的对象(即DAO),来封装对数据库的访问细节,这样可以使得业务代码不直接依赖于具体的数据库API,提高了代码的可测试性和可维护性。 在现代Java应用中,尤其...

    java复习题,jdbc,DAO模式,oracle复习题

    复习DAO模式时,需要理解其设计原则,如单一职责、开闭原则,并掌握如何在实际项目中应用DAO。 最后是Oracle数据库。Oracle提供了丰富的功能,如表、视图、索引、存储过程、触发器等,支持复杂的SQL查询。复习...

Global site tag (gtag.js) - Google Analytics