spring中七种事务传播行为

什么是传播行为?

默认情况下,只有一个事务,所有的修改操作都在一个事务里面,要么一起提交,要么一起回滚,这没什么问题。但要是有2个或者2个事务以上该如何解决呢?

既然是传播,那么至少要有2个东西,才可以传播,我传给你或者你传给我,才叫传播,单体不存在传播这个行为;

事务传播行为,指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。比如说,A事务方法调用了B事务方法,B是继续在调用者A的事务中运行呢?还是为自己另开一个新事物运行? 这就是由B的事务传播行为决定的。

spring事务传播行为一共有7种:(前言: 当前事务指的是调用者自带的事务,A调用B,那么A就是当前事务)

REQUIRED (默认传播行为),支持当前事务,如果当前没有事务,就新建一个事务,这个当前事务指的是上一个方法的事务,是别人传递过去的,类似于重入锁,A方法和B方法都有事务,A方法调用B方法,A的事务会传递给B,使它们共用同一个事务,我起了个名字叫做重入事务

SUPPORTS 如果存在一个事务,支持当前事务,如果没有事务,则非事务执行,

REQUIRES_NEW 开启一个新的事务。如果一个事务已经存在,则先将这个存在的事务挂起

MANDATORY 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常

NOT_SUPPORTED 总是非事务地执行,并挂起任何存在的事务

NEVER 总是非事务地执行,不加入任何事务;

NESTED 如果一个活动的事务存在,则运行在一个嵌套的事务中。 如果没有活动事务, 则按 REQUIRED 属性执行。

————————————————

原文链接:https://blog.csdn.net/qq_27184497/article/details/116525588

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务