事务传播
事务传播行为
传播行为作用:处理方法间互相调用时的业务处理。
7种业务传播行为:3种一个业务统一处理;3种不在一个业务处理;一种嵌套业务
隔离级别重点三种;
PROPAGATION_REQUIRED —— 支持当前事务,如果当前没有事务,则新建一个事务,这是最常见的选择,也是 Spring 默认的一个事务传播属性。
PROPAGATION_REQUIRES_NEW —— 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NESTED —— Nested的事务和它的父事务是相依的,它的提交是要等和它的父事务一块提交的。
前三个:如果aaa有事务,那么bbb也用这个事务,二者使用同一个事务;
中间三个:bbb和aaa不在同一个事务中;
最后一个PROPAGATION_NESTED,如果当前aaa事务存在,则bbb嵌套事务执行
假设先调用aaa(),再调用bbb()
如果在aaa中调用bbb,采用的是PROPAGATION_REQUIRED隔离级别, —— 支持当前事务,如果当前没有事务,则新建一个事务,这是最常见的选择,也是 Spring 默认的一个事务传播属性。那么aaa和bbb就在同一个事务中
事务的传播行为:解决业务层方法之间的相互调用问题
22222222222222222222222
123456
123456
事务的传播行为7中
事务的传播,业务成方法之间相互调用的问题
TransactionDefinition 定义事务传播行为
事务传播行为共有 7 种
服务器端分为三层:web层,业务层和持久层。
事务加在业务层。
TransactionDefinition定义事务传播行为
事务的传播行为:解决业务层方法之间相互调用的问题(一个service层里的方法调用另一个service里中的方法,这两个service中又分属于两个不同的事务,传播行为就是为了解决方法调用时事务的传递)。
事务的传播行为有7种,可以为3类:
第一类为前三个,重点掌握第一个(在相同事务里):支持当前事务(Service中aaa()调用Service中bbb()方法时,如果aaa()有事务,则bbb()使用该事务。如果aaa()没有事务,则bbb()就会创建一个事务),然后把aaa()里的内容包起来。
第二类为接下来三个,重点掌握第一个(在不同事务中):如果aaa()有事务存在,挂起当前事务,创建一个新的事务(aaa()和bbb()不在一个事务中)。
第三类:如果当前事务存在,则嵌套事务执行(执行aaa()完后,会使用事务的保存点,在执行bbb()时如果发生异常,可以回滚到设置的保存点,也可以回滚到最初始的状态)。
TransactionDefinition定义事务传播行为
事务的传播行为:解决业务层方法之间相互调用的问题(一个service层里的方法调用另一个service里中的方法,这两个service中又分属于两个不同的事务,传播行为就是为了解决方法调用时事务的传递)。
事务的传播行为有7种,可以为3类:
第一类为前三个,重点掌握第一个(在相同事务里):支持当前事务(Service中bbb()调用Service中aaa()方法时,如果aaa()有事务,则使用该事务。如果没有事务,则使用bbb()当前事务,如果当前bbb()也没有事务,就会新创建一个事务)
第二类为接下来三个,重点掌握第一个(在不同事务中):如果aaa()有事务存在,挂起当前事务,创建一个新的事务(aaa()和bbb()不在一个事务中)。
第三类:如果当前事务存在,则嵌套事务执行(执行aaa()完后,会使用事务的保存点,在执行bbb()时如果发生异常,可以回滚到设置的保存点,也可以回滚到最初始的状态)。
事务传播行为(七种)
事务的传播行为:解决业务层方法之间的相互调用的问题
事务的传播行为
七种事务传播行为
事物的传播行为:主要解决业务层方法之间的相互调用的问题
事物的七种传播行为
前三个:两个事物在同一个事物执行
四到六:确保两个事物不在一个事物执行
七:嵌套执行
事务的七种传播行为
事物的转播行为
事务的传播行为(七种)
事务传播行为(7种): 解决的是业务层方法之间相互调用时, 事务如何传递的问题.
propagation_required 不存在则新建
propagation_requires_new 若有事务存在,挂起当前事务
propagation_nested 如果当前事务存在,则嵌套事务执行
Spring—API
什么是事务的传播行为
事务的传播行为要来解决什么问题
例子:
web层
业务层
持久层
当我们要控制事务
那么事务要加载到业务层中
业务层出现复杂的情况,
业务层同时调用两个的业务方法,才能完成一个业务
当然两个方法都有事务,
但是这个事务到底是使用了到了谁里边的
然后就产生了事务的传播行为
它主要解决业务层方法之间的相互调用的问题,在调用过程当中事务是 如何传递的
以下事务传播行为(七种)
1~3一组事务(同类)第一类
4~6一组事务(同类)第二类
7 比较复杂的事务
重要的1,4 ,7
事务的传播行为要解决的问题:
业务层中添加了事务的的多个方法被一起调用时如何处理各方法间事务的关系的问题,具体来说是事务如何传递的问题。
假如业务层中有事务方法A和B,另外有一个方法C在其方法体中依次调用了A和B,由于A和B都有各自的事务,此时B的传播行为就决定了其如何处理和A已有的事务之间的关系;
七种传播行为分为三类:
支持当前事务,即事务存在则加入当前事务,如果事务不存在分别有新建一个事务,不使用事务,抛出异常三种行为;
不支持当前事务,即独立运行事务,如果事务存在分别有新建一个事务,不使用事务,抛出异常三种行为;
如果当前事务存在,则将自身的事务作为当前事务的子事务运行,在运行子事务时,当前事务记录一个保存点,子事务不报错则和当前事务一起提交或回滚,子事务报错则根据自定义配置让当前事务回滚到保存点或起始点;
事务的传播行为
传播行为分三类,前三个是一类,中间三个是一类,最后一个是一类。重点记每一类的第一个。
事务的传播行为:解决业务层之间的相互调用问题