spring 事务整理

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



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


ROPAGATION_REQUIRED:最经常使用的事务,若是外部事务也是ROPAGATION_REQUIRED的话,感受它们更像是组成了一条线,简单的说 就是外部事务没有的时候 他就创建一个新事务;若是外部事务存在的时候,他就加入外部事务it


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


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

相关文章
相关标签/搜索