Fork me on GitHub

Spring事物传播

事务的含义

事务的传播性一般在事务嵌套时候使用,比如在事务A里面调用了另外一个使用事务的方法,那么这俩个事务是各自作为独立的事务执行提交,还是内层的事务合并到外层的事务一块提交那,这就是事务传播性要确定的问题。下面一一介绍比较常用的事务传播性。

Spring 事务传播

REQUIRED

Spring 默认传播行为,如果外部没有事务,新建一事务,有的话,加入到外层事务,一起提交

SUPPORTS

支持外层事务,如果外层没事务,以非事务方式提交

MANDATORY

只支持外层事务,如果外层没有事务,抛异常

REQUIRES_NEW

新建事务,如果外层存在事务,先挂起事务,当前事务执行完成再恢复外层事务执行

NOT_SUPPORTED

外层存在事务则挂起外层事务 ,然后执行当前逻辑,执行完毕后,恢复外层事务。

NEVER

如果外层存在事务则直接抛出异常。

NESTED

可以保存状态保存点,当事务回滚后会回滚到某一个保存点上,从而避免所有嵌套事务都回滚。

显示 Gitment 评论