`
sunbin
  • 浏览: 352517 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring aop 事务 事务隔离方式

阅读更多

 

    <bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"

        abstract="true">

       <property name="transactionManager" ref="transactionManager"/>

       <property name="transactionAttributes">

           <props>

              <prop key="insert*">PROPAGATION_REQUIRED</prop>

              <prop key="update*">PROPAGATION_REQUIRED</prop>

              <prop key="delete*">PROPAGATION_REQUIRED</prop>

              <prop key="change*">PROPAGATION_REQUIRED</prop>

              <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>

           </props>

       </property>

    </bean>

1

一旦你决定要用 AOP 来做 SERVICE 内部每个方法的事务处理,那么在 DAO 层内部最好不要从自己去 catch 异常,因为在 SERVICE 里面可能多次调用 DAO ,一旦多次调用,你其中一个方法捕获了异常就没有办法保证事务回滚,所以即使你捕获异常为了调试,一定要在 CATCH 方法中一定还要抛出一个异常来,否则无法保证事务

2

一旦决定要用 spring aop 方式来处理事务,一定要不采用 JDOtemplate ,或者 HIBERNATE TEMPALATE 内部类的方式,因为那样他们自己去管理事务,一旦在内部类中事务回滚,无法保证其他的 DAO 中事务回滚

3

1、 PROPAGATION_REQUIRED -- 支持当前的事务,如果不存在就创建一个新的。这是最常用的选择。
2 PROPAGATION_SUPPORTS -- 支持当前的事务,如果不存在就不使用事务。
3 PROPAGATION_MANDATORY -- 支持当前的事务,如果不存在就抛出异常。
4 PROPAGATION_REQUIRES_NEW -- 创建一个新的事务,并暂停当前的事务(如果存在)。
5 PROPAGATION_NOT_SUPPORTED -- 不使用事务,并暂停当前的事务(如果存在)。
6 PROPAGATION_NEVER -- 不使用事务,如果当前存在事务就抛出异常。
7 PROPAGATION_NESTED -- 如果当前存在事务就作为嵌入事务执行,否则与 PROPAGATION_REQUIRED 类似。

4 < prop key="change*">PROPAGATION_REQUIRED</prop>

  你可以在 PROPAGATION_REQUIRE 之后指定抛出什么样的异常事务才回滚,或者事务的隔离方式是什么等等都可以配置如 <prop key="change*">PROPAGATION_REQUIRED,readOnly,-PetClinicException</prop>

分享到:
评论

相关推荐

    java springAOP 事务+注释

    Java Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改原有代码的情况下,通过代理方式插入额外的功能,如日志、事务管理等。在这个主题中,我们将深入探讨Spring AOP如何处理事务管理...

    无处不在的Spring AOP事务及踩过的坑

    5. **事务隔离级别**:Spring支持多种事务隔离级别,如READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE。不同的隔离级别会影响并发性能和数据一致性。选择不当可能导致脏读、不可重复读或幻读问题...

    springAop事务配置

    在Spring框架中,AOP(面向切面编程)被广泛用于实现事务管理,因为它允许我们以声明式的方式处理事务,从而让业务代码更加简洁、易维护。本篇将详细讲解Spring AOP如何进行事务配置,包括注解和非注解两种方式。 1...

    mybatis 拦截器 + spring aop切面 + spring事务+ 反射工具类

    在IT行业中,MyBatis、Spring AOP、Spring事务管理和反射工具类是常见的技术栈,它们在构建高效、灵活的企业级应用中起着至关重要的作用。以下是对这些知识点的详细阐述: 1. MyBatis拦截器(MyBatis Interceptor)...

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    在Spring中,你可以为特定的类或方法声明事务属性,如事务的传播行为、隔离级别、是否回滚等。这些配置通常在Spring的XML配置文件中完成,或者使用Java配置类进行。当一个方法被标记为@Transactional,Spring会在...

    SpringAOP整合Hibernate并使用事务(模拟买书的过程)

    在本示例中,我们将探讨如何整合Spring AOP(面向切面编程)与Hibernate ORM框架,并利用它们来实现事务管理,模拟一个简单的买书过程。这个过程将涉及到数据库操作,事务的开始、提交和回滚,以及AOP在处理事务中的...

    Spring aop、jdbc和事务tx练习

    在IT领域,Spring框架是Java开发中的核心工具之一,它为构建高质量的、可维护的、松耦合的应用程序...在实践中,你可能会遇到的问题包括事务传播行为、异常回滚规则、事务隔离级别等,这些都是进一步学习和研究的方向。

    spring AOP(声明式事务管理)小程序

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它为应用程序提供了声明式的企业级服务,如日志、安全控制、缓存和事务管理等。在本“spring AOP(声明式事务管理)小...

    SpringAOP整合Hibernate并使用事务

    - 使用AOP事务管理时,确保被事务管理的方法是public的,否则AOP代理可能无法正常工作。 通过以上步骤,你可以成功地在Spring框架中整合Hibernate,并利用AOP进行事务管理,实现高效、稳定的Java企业级应用开发。...

    Spring AOP管理Hibernate事务(TransactionInSpringAOP)

    5. **事务隔离级别**:包括READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE,它们决定了并发事务之间的数据可见性和一致性。 6. **回滚规则**:默认情况下,如果方法抛出未检查异常(继承自...

    第五章:Spring AOP 在 Spring Framework 内部应用1

    本章主要探讨了Spring AOP在Spring框架内部的多种应用,包括事件处理、事务管理和缓存等关键功能。 首先,我们来看Spring AOP在Spring事件(Events)中的应用。Spring事件模型允许应用程序组件之间进行异步通信。当...

    spring隔离级别和aop基础.md

    综上所述,事务隔离级别和事务传播行为是确保数据一致性和事务处理的重要工具,而 AOP 则提供了一种优雅的方式来处理横切关注点。在实际应用中,合理配置这些特性可以显著提高应用程序的性能和可靠性。

    spring 事务管理例子(TransactionProxyFactoryBean代理机制 和 tx/aop)

    总结来说,本例子通过`TransactionProxyFactoryBean`和`@Transactional`展示了如何在Spring中实现声明式事务管理,这两种方式都利用了AOP来封装事务逻辑,使代码更加整洁,降低了事务管理的复杂性。在实际应用中,...

    Spring AOP源码笔记

    - **事务属性**: 包括传播行为、隔离级别、回滚规则等,影响事务的执行方式。 **6. Spring事务原理** - **事务传播机制**: 解释不同事务传播行为的工作原理,如在一个事务中调用另一个事务方法时的行为。 - **线程...

    进击的编程思想!带你学Spring AOP核心编程思想教程 新角度学面向切面编程

    Spring AOP 使用纯 Java 实现,不需要专门的编译过程和类加载器,在运行期间通过代理方式向目标类植入增强的代码。 课程内容非常详细的介绍Spring AOP全栈技术点,开篇帮助同学们进行知识储备,夯实基础就是核心!...

    spring学习事务源码

    4. **TransactionInterceptor**: 是AOP事务管理的核心,它会在方法执行前后自动调用事务管理的相关操作。 声明式事务管理基于Spring的AOP代理,主要涉及以下组件: 1. **@Transactional** 注解:标记在方法上,...

    SPRING事务机制DEMO

    Spring提供了多种事务管理方式,包括编程式事务管理和声明式事务管理。在这篇DEMO中,我们将重点探讨Spring的声明式事务处理以及AOP(面向切面编程)的相关应用。 首先,让我们了解一下AOP。AOP是Spring框架的一个...

    spring声明事务的配置

    Spring的声明式事务管理基于其面向切面编程(AOP)框架实现,事务管理器会拦截事务方法的调用,根据配置的事务属性自动进行事务的开启、提交、回滚等操作。 7. **Spring 2.x及更高版本的改进** 随着Spring的发展,...

Global site tag (gtag.js) - Google Analytics