当前位置:   article > 正文

7种Spring的事务传播级别propagation_propagation = propagation.mandatory

propagation = propagation.mandatory

Spring事务的传播级别(propagation)

@Transactional(propagation = Propagation.REQUIRED)
pubilc void methodA(){
        doSomething;
        methodB();
        doSomething;
}

@Transactional(propagation = Propagation.REQUIRED)
@Transactional(propagation = Propagation.REQUIRED_NEW)
@Transactional(propagation = Propagation.SUPPORTS)
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@Transactional(propagation = Propagation.MANDATORY)
@Transactional(propagation = Propagation.NEVER)
@Transactional(propagation = Propagation.NESTED)
pubilc void methodB(){
        doSomething;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  1. REQUIRED_NEW 无论如何都新建一个事务,与其他事务间互不影响。

    (始终独立成事务,自成自闭)
    若嵌套执行的方法要求各自事务独立,互不影响,则选择本传播级别。里是引用

  2. REQUIRED(默认) 可单独成一事务。若被其他事务包裹则加入该事务,成为其一部分。

    (平等加入,独立亦可成事务,自成融合)
    若嵌套执行的方法要求一起成功或者回滚,则选择本传播级别。

  3. SUPPORTS 单独不能成事务,只能依赖其他事务,成为其事务的一部分。

    (依赖加入,独立不能成事务,依附融合)
    若嵌套执行的方法要求一起成功或者回滚,单独执行时候以非事务方式执行,则选择本事物级别。

  4. MANDATORY 只能成为其他事务的一部分,单纯执行将报错。

    (强制加入,独立不可执行。寄生融合)
    若嵌套执行的方法要求一起执行成功或者一起回滚,不允许以不被事务包裹方式执行,则选择该事物传播级别。

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

    (巢筑,独立亦可成事务)
    若嵌套执行的方法要求内部方法出错只回滚自己,外部方法执行失败回滚所有,单独执行时候自动开启一个执行,则选择该事物传播级别。

  6. NOT_SUPPORTED 当前方法不应该有事务,如果有事务存在,将它挂起,以无事务状态运行

    (可被吞并,始终不支持事务。)
    (无事务,就是指底层的Connection对象的autoCommit、isolation等属性与数据库有关,与dataSource设置的属性有关,不会被Spring改变。)
    若嵌套执行的方法要求内部嵌套方法不会对外部方法事务造成影响并且内部方法不需要事务,单独执行时候亦以非事务方式执行,则选择该事物传播级别。

  7. NEVER 被事务强制包裹则抛出异常,单独执行时候必须以非事务方式执行。

    (不可被吞并,始终不支持事务。)
    若嵌套执行的方法要求内部方法不允许在事务中执行,单独执行时候必须以非事务方式执行,则选择该事物传播级别。

REQUIRED_NEW 、REQUIRED 和 NESTED的异同

相同:
如不在事务中,都会创建一个新的事务

不同:
如果在事务中:
REQUIRED_NEW:父子事务互不影响;
REQUIRED:会跟着父任务一同提交,一同失败 ;
NESTED:是如果当前事务出现异常,本身进行回滚操作,但是父任务不会进行回滚操作,不过如果父任务发生异常,子任务会进行回滚操作 。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/405386
推荐阅读
相关标签
  

闽ICP备14008679号