常见事务传播特性

REQUIRED:如果当前没有事务,则⾃⼰新建⼀个事务,如果当前存在事务,则加⼊这个事务。

如果当前没有事务,则⾃⼰新建⼀个事务

例子:当前没有事务,代码中出现了异常,不会导致事务回滚。checkout的事务为REQUIRED,muLtx没有设置事务。此时是checkout创建的新事务

 

如果当前存在事务,则加⼊这个事务

当给mulTx加上事务,此时和外层事务mulTx同用一个事务,当mulTx出现异常时,checkout同时回滚,数据不发生变化

以下代码自己去实践,懒得贴了

 当外层有事务时,里层无论有多少含有事务(REQUIRED)的方法执行,只要某出发生异常,数据全部回滚,因为同用外层事务。如果外层没有事务,则使用自己的事务。无论某个内层事务出现异常是否被捕获,所有事务数据都会回滚。

REQUIRES_NEW:创建⼀个新事物,如果存在当前事务,则挂起该事务

外层事务和内层事务无关,外层事务代码出现异常,内层代码正常,内层数据不回滚。当内层有多个事务(REQUIRED_NEW)时,各个事务都单独运行。

NESTED:如果当前事务存在,则在嵌套事务中执⾏,否则REQUIRED的操作⼀样(开启⼀个事务)

如果内层事务中的代码抛出异常,并且被捕获,外层事务中的其他事务代码不会回滚;如果外层事务中的其他代码抛出异常,而且没有捕获,会导致其他事务代码回滚。

NESTED和REQUIRED最大区别在于:在有外层事务前提下,当某个内层事务出现异常,REQUIRED无论异常是否被捕获,都会导致其他事务回滚。NESTED时,当异常被捕获,其他事务数据不会回滚,不捕获,会导致其他事务数据回滚。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值