事务的传播行为

1、简介

当事务方法被另外一个事务调用时,必须指定事务应该如何传播,例如:方法可能在现有事务中继续运行,也可能开启一个新的事务,并在自己的事务中运行。

事务的传播行为由事务的传播属性确定,Spring定义了7总类传播行为。

REQUIRED

required:需要的

如果有事务在运行,当前方法就在这个事务内运行,否则,就启动一个新的事务,并在自己的事务内运行。

行为:假设我和老王两家人出去旅游,我比较懒,就看老王家有没有车,老王有车就坐老王的,他没车我就自己再找一辆车。

影响:如果我在老王的车上,老王翻车了,也会受影响。如果自己开的车,就不会被影响。

REQUIRES_NEW

required_new:需要新的

当前的方法必须启动新的事务,并在它自己的事务内运行。如果有事务正在运行,应该将它(别的事务)挂起。

行为:还是和老王出去旅游,我不管老王有没有车,我都自己开自己的车。

SUPPORTS

supports:支持

如果有事务运行,当前方法就在这个事务内运行,否则,它就可以不运行在事务中。

行为:有(事务)我就运行事务内,没有就拉倒。

NOT_SUPPORTED

not_supported:不支持

当前的方法不应该运行在事务中,如果有事务,则将这个事务挂起。

MANDATORY

mandatory:强制的,

当前的方法必须运行在事务内部,如果没有正在运行的事务,就抛出异常。

行为:必须有事务,没有就抛出异常。

NEVER

never:绝不

当前的方法不应该运行在事务中,如果有运行的事务,就抛出异常。

NESTED

nested:嵌套事务

如果有事务在运行,当前的方法就应该在这个事务的嵌套事务内运行;否则,就启动一个新的事务,并在它自己的事务内运行。

REQUIRED和REQUIRED_NEW比较常用,NESTED需要数据库支持,剩下几个一般很少用到。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值