事务传播机制

spring事务传播机制

Propagation.REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择,也是spring默认的事务的传播。

Propagation.SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

Propagation.MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。

Propagation.REQUIRES_NEW新建事务,如果当前存在事务,把当前事务挂起。

Propagation.NOT_SUPPORTED以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

Propagation.NEVER以非事务方式执行,如果当前存在事务,则抛出异常。

Propagation.NESTED如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

详解

Propagation.REQUIRES_NEW

  新建事务,如果当前存在事务,把当前事务挂起。新建的事务将和被挂起的事务没有任何关系,是两个独立的事务,外层事务失败回滚之后,不能回滚内层事务执行的结果,内层事务失败抛出异常,外层事务捕获,也可以不处理回滚操作。

Propagation.NESTED

  表示如果当前存在事务,则该方法应该运行在一个嵌套事务中,被嵌套的事务可以独立于被封装的事务中进行提交或者回滚。如果封装事务存在,并且外层事务抛出异常回滚,那么内层事务必须回滚,反之,内层事务并不影响外层事务。如果封装事务不存在,则同propagation_required的一样。

原文地址:https://www.cnblogs.com/517cn/p/10961696.html