前些日子在开发一个项目的过程中,碰到了这样一个问题,现在拿出来于大家分享:
问题描述:
项目中我使用的是Spring2声明式事务,并将此事务作用于Service层(业务逻辑层)。
部分配置代码如下所示:
<!-- hibernate事务定义 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 以AspectJ方式 定义 AOP, 如果service没有基于接口,使用cgilib来实现AOP,定义proxy-target-class="true" (3) -->
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(* gos.business..*Service.*(..))" advice-ref="txAdvice"/>
</aop:config>
<!-- 基本事务定义,使用transactionManager作事务管理. -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
如果你在service层的方法中使用try/catch块,那么有时问题出现了:
1.代码就算有异常,它也不会捕获。即不起作用。
2.事务不会回滚。
解决方案:
由于spring2做了将异常统一为DataAccessException的处理,所有你不需要在service层做任何的异常捕获动作,你只要在ACTION中使用try/catch块捕获相应的异常就OK了。
分享到:
相关推荐
Spring 中的事务处理可以分为两种方式:声明式事务处理和编程式事务处理。声明式事务处理通过 AOP 的实现,把事务管理代码作为方面封装到业务代码中,使得事务管理代码和业务代码解藕。这使得事务管理变得更加灵活...
在IT领域,尤其是在Java开发中,Spring框架与MyBatis框架的结合是常见的技术栈,它们在处理数据库操作时,事务管理是至关重要的一个环节。本文将深入探讨"spring+mybatis的声明式事务"这一主题,帮助你理解并掌握这...
根据提供的信息,我们可以深入探讨Spring框架中的声明式事务配置及其多种实现方式。声明式事务管理是一种简化事务管理的方式,它允许开发人员通过配置而非编程来指定事务边界,从而减少了代码的复杂性并提高了可维护...
在Java中,通常使用JDBC的Connection对象来管理事务,但在Spring框架中,我们可以使用声明式事务处理来简化这一过程。 声明式事务处理的核心是基于AOP(面向切面编程)的,Spring通过在事务边界添加通知(advice)...
在Spring框架中,声明式事务管理是通过AOP(面向切面编程)实现的,它为开发者提供了方便、高效且灵活的事务管理机制。本文将深入探讨如何利用Spring的声明式事务来处理业务操作中的数据一致性问题,以及相关源码...
这篇博文"Spring使用XML配置声明式事务"详细介绍了如何在Spring中使用XML配置来实现这一功能。 首先,我们需要了解Spring的核心组件之一——ApplicationContext,它是Spring容器的实例,负责管理和装配我们的bean。...
1. **配置Spring容器**:在Spring的配置文件(如`applicationContext.xml`)中,我们需要定义一个`<tx:annotation-driven>`元素,这将启用基于注解的声明式事务管理。同时,需要配置数据源(DataSource)和事务管理...
* TransactionDefinition.ISOLATION_REPEATABLE_READ:表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同 * TransactionDefinition.ISOLATION_SERIALIZABLE:所有的事务依次逐个执行,...
在Spring框架中,声明式事务管理是其核心特性之一,它允许开发者无需手动处理事务的开始、提交、回滚等操作,而是通过配置或者注解的方式进行声明,从而简化了事务管理的复杂性。本篇文章将深入探讨如何使用Spring的...
本篇将详细介绍如何在Spring 2.5版本中整合iBATIS 2.3,并利用Spring的声明式事务管理,以提升应用程序的稳定性和可维护性。 首先,我们需要了解Spring 2.5和iBATIS 2.3的基本概念。Spring 2.5是Spring框架的一个...
spring声明式事务实例 可复制修改使用。。。。。。。。。。
Spring声明式事务配置管理方法
本文将全面分析Spring中的编程式事务管理和声明式事务管理,旨在帮助开发者深入理解这两种事务管理方式,并在实际项目中合理选择。 **编程式事务管理** 编程式事务管理是通过代码直接控制事务的开始、提交、回滚等...
默认情况下,如果一个方法被@Transactional标记,那么该方法将在一个新的事务中运行,除非当前存在一个事务,此时它会加入到现有事务中。 3. **XML配置**: - 在传统的Spring配置中,你可以通过`...
Spring 声明式事务和Spring 编程式事务
实验 "Spring 声明事务" 是 Java 高级编程中的一个重要环节,旨在让学生掌握 Spring 框架中声明式事务管理的配置和使用。在实际应用中,事务管理是确保数据一致性、完整性和可靠性的关键组件。Spring 提供了声明式...
通过这个集成示例,开发者不仅可以了解如何将Spring的声明式事务管理与Hibernate的持久化能力结合,还能学习到如何组织和设计一个基于Spring的业务架构。这有助于提高代码的可维护性和可扩展性,降低系统复杂性,是...
本示例“spring+ibatis声明式事务Demo”将探讨如何在Spring与iBatis集成环境中使用声明式事务管理。声明式事务管理允许开发者通过配置来控制事务,无需在代码中显式处理事务开始、提交和回滚。 **Spring框架** 是一...
- 引入了一个创新的特性,即在同一个事务内支持数据源的切换,并且兼容Spring的声明式事务管理。这意味着在事务中,可以按需在不同的数据源之间平滑切换,而无需担心事务一致性问题。 6. **多数据源事务回滚**: ...