spring 事务的传播特性

1.声明式事物中,一个类serviceA的方法test1()调用另一个类serviceB的方法test2() 要是serviceB的test2()事务配置在xml文件中为REQUIRED,又在此方法上加入

@Transactional(propagation = Propagation.NOT_SUPPORTED)

则serviceB.test2()的以xml中为主,NOT_SUPPORTED就不起作用了。如果方法没在xml上配置REQUIRED,则会起作用
如果是在同一类中调用另一方法test2上加 Propagation.NOT_SUPPORTED ,则test2()的PROPAGATION_NOT_SUPPORTED失效2.如果一个类中一个方法test1()调用此类的另一方法test2(),都是required,要是test2抛异常的话,若test1不catch,则都会回滚,或test1方法catch了异常,则两个方法都会提交3.如果一个类中一个方法test1()调用另一个类的方法test2(),都是required,要是test2抛异常的话,若test1不catch,则都会回滚,或test1方法catch了异常,则仍然回滚

转:http://8917152.blog.51cto.com/8907152/1544254
时间: 2024-12-28 22:55:56

spring 事务的传播特性的相关文章

Spring事务的传播特性和隔离级别

事务的几种传播特性1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务.如果没有事务则开启2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务.如果没有事务,则非事务的执行3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务.如果没有一个活动的事务,则抛出异常.4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务.如果一个事务已经存在,则将这个存在的事务挂起.5. PROPAGA

spring事务的传播特性

所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring 支持 7 种事务传播行为: PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中.这是最常见的选择. PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行. PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常. PROPAGATION_REQUIRES_NEW 新建事务,如

Spring事务的传播行为 @Transactional(转)

Spring事务的传播行为 在service类前加上@Transactional,声明这个service所有方法需要事务管理.每一个业务方法开始时都会打开一个事务. Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚.这个例外是unchecked 如果遇到checked意外就不回滚. 如何改变默认规则: 1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class) 2 让unchecke

数据库的特性与隔离级别和spring事务的传播机制和隔离级别

首先数据库的特性就是 ACID: Atomicity 原子性:所有事务是一个整体,要么全部成功,要么失败 Consistency 一致性:在事务开始和结束前,要保持一致性状态 Isolation 隔离性: 对于同一个表的操作,每个事务都是单独的,不会影响其他事务. Durability 持久性: 事务一旦提交,数据库中的数据就是永久的了. 对于以上四种特性中的隔离性,不同的策略会有不同的弊端:脏读,不可重复读,幻读. 脏读: 就是一个事务读取了别的事务执行过程中未提交的数据. 不可重复读: 就是

Spring事务之传播机制

Spring事务传播机制:Spring在TransactionDefinition接口中规定了种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套时事务如何进行传播.即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁). 事务的嵌套概念:所谓事务的嵌套就是两个事务方法之间相互调用.Spring事务开启,或者是基于接口的,或者是基于类的代理被创建(注意一定要是代理,不能手动new一个对象,并且此类(有无接口都行)一定要被代理----Spring中的b

spring事务的传播机制和隔离性

1.事务的传播机制: 指多个事务方法在相互调用时,事务如何在这些方法中传播. Spring支持7种事务传播行为: PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中.这是最常见的选择. PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行. PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常. PROPAGATION_REQUIRES_NEW 新建事务,

Spring事务的传播行为和隔离级别

1.事务的传播行为 事务的使用过程中,用的最多的传播行为是require,在大部分的mis系统里,可以对整个业务层切一个require的事务就可以满足需要. 但spring提供的不仅如此,对于复杂的业务,Spring也提供了相应的事务传播行为来满足业务需要. Spring中的传播行为如下: Require:支持当前事务,如果没有事务,就建一个新的,这是最常见的: Supports:支持当前事务,如果当前没有事务,就以非事务方式执行: Mandatory:支持当前事务,如果当前没有事务,就抛出异常

spring事务的传播行为与隔离级别详解

关于Spring的事务有7个传播行为,4个隔离级别. 一.事务的传播行为 @Transactional(readOnly = false, rollbackFor = Exception.class) @Transactional(readOnly = false, rollbackFor = Exception.class, propagation = Propagation.REQUIRED,timeout=30) 1.propagation_required:若当前没有事务就新建一个事务,

深入理解事务--Spring事务的传播机制

https://blog.csdn.net/yuanlaishini2010/article/details/45792069 事务的嵌套概念 所谓事务的嵌套就是两个事务方法之间相互调用.spring事务开启 ,或者是基于接口的或者是基于类的代理被创建(注意一定要是代理,不能手动new 一个对象,并且此类(有无接口都行)一定要被代理--spring中的bean只要纳入了IOC管理都是被代理的).所以在同一个类中一个方法调用另一个方法有事务的方法,事务是不会起作用的. ### Spring默认情况