spring 事务整理

首先 Spring 的事物分为7种,如下:

 


ROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER -- 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED -- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。


ROPAGATION_REQUIRED:最常用的事务,如果外部事务也是ROPAGATION_REQUIRED的话,感觉它们更像是首尾相连组成了一条线,简单的说 就是外部事务没有的时候 他就建立一个新事务;如果外部事务存在的时候,他就加入外部事务

 

PROPAGATION_NESTED :这个简单的说就是  如果PROPAGATION_NESTED已经在一个事务中,那么在它将嵌套在这个事务中执行,这个时候PROPAGATION_NESTED事务是外部事务的一个子事务,当PROPAGATION_NESTED事务开始执行的时候,会设立一个save point,当这个PROPAGATION_NESTED事务失败 ,事务将会滚到这个save point点,在外部事务提交和回滚的时候会随着外部事务一起提交或着回滚; 如果外部不存在事务就跟ROPAGATION_REQUIRED一样

 

PROPAGATION_REQUIRES_NEW:当前已经存在事务 那么新建一个单独的事务,是一个完整的事务,这个事务独立于外部事务自己的commit,rollback 不受外部事务的影响,当它开始运行时 外部事务将挂起。内部事务结束 外部事务继续执行。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。