从英文命名理解Spring事务传播机制@Transactional解释

事务传播机制

验证demo

序号  事务传播策略英文释义策略解析
1MANDATORY强制的,非有不可的,强制性规定的

也就是规定被注解的方法被调用之前,强烈地要求执行线程中必须已经存在事务,如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。(最要求事务)

2REQUIRED需要的,必备的

被注解方法需要被一个事务包裹,如果当前存在事务,则直接使用,加入该事务;如果当前没有事务,则创建一个新的事务并加入。

3SUPPORTS支持的,拥护的,但不是强制的

因为不是强制的要求事务的,所以如果主动调用的方法存在事务,则当前被调用的SUPPORTS就加入已经存在的事务;如果当前没有事务,则以非事务的方式继续执行,这种行为就表达了对事物的支持性,SUPPORTS就像一块铁钉,有磁铁(事务)就被磁铁(吸引),没有就是清清白白干干净净的铁钉。

4REQUIRES_NEW需要的,且需要一个新的

需要事务,且还需要一个全新的事务,这比REQUIRED对事务的要求更高,无论当前是否存在事务,都创建一个新的事务,并挂起当前事务(如果存在的话)。

5NOT_SUPPORTED不支持,支持的反义词,甚至有反抗的意味

不支持事务,且抵触事务,会强烈地以非事务的方式执行操作,如果存在的话甚至会挂起当前事务。

6NEVER从不,反抗意味的巅峰

最反抗事务的一个等级,以非事务的方式执行,如果当前存在事务,则抛出异常。(最反抗事务)

7NESTED嵌套的

如果当前存在事务,则执行一个嵌套事务;如果当前没有事务,则执行与REQUIRED相同的行为。嵌套的就多了一层独立的味道在里边,说明有一定的隔离性。隔离在于:如果当前存在事务,它将会成为父级事务的一个子事务,方法结束后并没有提交,只有等父事务结束才提交
如果当前没有事务,则新建事务
如果它异常,父级可以捕获它的异常而不进行回滚,正常提交
但如果父级异常,它必然回滚,这就是和 REQUIRES_NEW 的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值