spring事务传播

@Transactioal

A()

@Transactional

B()

C()

如果A调用B,则A会把它的事务传播给B,它们在同一事务下运行,统一回滚。但如果B方法是require_new,则失败的话,B单独回滚,A不受影响。

如果A调用C,则spring会认为C就是A的代码,他们肯定在同一事务下运行,统一回滚。

但是,如果如下代码:

@Transactional

A(){

B b = new B();

b.xxMethod();

}

如果b.xxMethod()方法有单独写的数据库增删改操作,则根本不在一个事务里,外部大事务失败,它内部不受影响。

多线程中的事务,可能也不是同一事务

时间: 2024-10-18 12:36:06

spring事务传播的相关文章

Spring事务传播特性的浅析——事务方法嵌套调用的迷茫

Spring事务传播机制回顾 Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务.结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷. 其实这是不认识Spring事务传播机制而造成的误解,Spring对事务控制的支持统一在TransactionDefinition类中描述,该类有以下几个重要的接口方法: int getPropagationBehavior():事务的传播行为 int getIsolationLevel():事务的隔离级别

什么是事务、事务特性、事务隔离级别、spring事务传播特性

1.什么是事务: 事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败). 2.事务特性: 事务特性分为四个:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持续性(Durability)简称ACID. 原子性(Atomicity):事务是数据库逻辑工作单元,事务中包含的操作要么都执行成功,要么都执行失败. 一致性(Consistency):事务执行的结果必须是使数据库数据

spring事务传播行为的思考

1.问题 @TransactionConfiguration(transactionManager = "txManager", defaultRollback = false) public class ActivityPublishComposeTest extends BaseUnitTest { @Autowired private ActivityPublishCompose activityPublishCompose; @Test @Rollback public voi

理解 spring 事务传播行为与数据隔离级别

事务,是为了保障逻辑处理的原子性.一致性.隔离性.永久性. 通过事务控制,可以避免因为逻辑处理失败而导致产生脏数据等等一系列的问题. 事务有两个重要特性: 事务的传播行为 数据隔离级别 1.事务传播行为(Transaction Behavior) 传播行为级别,定义的是事务的控制范围.通俗点说,执行到某段代码时,对已存在事务的不同处理方式. Spring 对 JDBC 的事务隔离级别进行了补充和扩展,并提出了 7 种事务传播行为. 1)Spring 中提供的 7 种传播行为 PROPAGATIO

spring事务传播性理解

什么是spring的事务传播性 个人的理解, 首先先说一下事务传播性,事务传播性就是,事务中还包括另外的事务,事务之间是怎么相互影响,然后如何执行的,这就是事务传播性 spring事务传播性就是spring中是如何去规定事务是如何执行的,情况如下: public class DemoServiceA { //事务A @Transactional(propagation=Propagation.REQUIRED)//对于外层事务来说(相对的,如果demoMthodA加到demoMthodC中,de

事务、事务特性、事务隔离级别、spring事务传播特性

1.什么是事务: 事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败). 2.事务特性: 事务特性分为四个:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持续性(Durability)简称ACID. 原子性(Atomicity):事务是数据库逻辑工作单元,事务中包含的操作要么都执行成功,要么都执行失败. 一致性(Consistency):事务执行的结果必须是使数据库数据

Spring事务传播属性介绍(三).Nested

Required.Required_New传播属性分析传送门:https://www.cnblogs.com/lvbinbin2yujie/p/10259897.html Mandatory.Never.Not_Support传播属性分析传送门:https://www.cnblogs.com/lvbinbin2yujie/p/10260030.html 我的Spring事务传播属性介绍比较传送门:https://files.cnblogs.com/files/lvbinbin2yujie/Spr

Spring事务传播属性介绍(一).required 和 reuqires_new

Mandatory.Never.Not_Support传播属性分析传送门:https://www.cnblogs.com/lvbinbin2yujie/p/10260030.html Nested传播属性分析传送门:https://www.cnblogs.com/lvbinbin2yujie/p/10260066.html 我的Spring事务传播属性介绍比较传送门:https://files.cnblogs.com/files/lvbinbin2yujie/Spring_Tx_Note.rar

spring事务传播和隔离机制

什么是事务? 事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败! 事务特征ACID: 原子性(Atomicity):事务是一个原子操作,由一系列动作组成.事务的原子性确保动作要么全部完成,要么完全不起作用. 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败.在现实中的数据不应该被破坏. 隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据

spring事务传播属性与隔离级别

一.Propagation (事务的传播属性) Propagation : key属性确定代理应该给哪个方法增加事务行为.这样的属性最重要的部份是传播行为.有以下选项可供使用: PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择.PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行.PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常.PROPAGATION_R