spring的事务传播机制有哪些

fiy 其他 8

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring的事务传播机制包括以下几种:

    1. REQUIRED:如果当前没有事务,则创建一个新的事务;如果已经存在事务,则加入到当前事务中,成为当前事务的一部分。这是默认的传播机制。

    2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式运行。

    3. MANDATORY:要求当前存在事务,如果没有事务,则抛出异常。

    4. REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。

    5. NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则挂起当前事务。

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

    7. NESTED:如果当前存在事务,则在一个嵌套事务中运行;如果当前没有事务,则创建一个新的事务。嵌套事务是外部事务的一部分,可以独立提交或回滚。

    以上就是Spring的事务传播机制的几种类型,开发人员可以根据实际需求选择合适的传播机制来管理事务的行为。不同的传播机制可以在不同的场景下提供更好的事务管理和控制。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring的事务传播机制主要有以下几种:

    1. REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是最常用的传播机制,也是默认的传播机制。多个方法调用属于同一个事务。

    2. REQUIRES_NEW:无论当前是否存在事务,都创建一个新的事务。如果当前存在事务,则挂起当前事务,并在新的事务中执行;新的事务完成后,继续执行原来的事务。多个方法调用属于不同的事务。

    3. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则不使用事务。适用于只读操作或者不需要事务支持的方法。

    4. NOT_SUPPORTED:当前方法不应该在事务中执行。如果当前存在事务,则挂起当前事务,并以非事务的方式执行。适用于不需要事务支持的方法。

    5. NEVER:当前方法不应该在事务中执行。如果当前存在事务,则抛出异常。适用于需要禁止事务的方法。

    除了以上常用的事务传播机制,还有一些其他的传播机制,如MANDATORY(如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常),NESTED(如果当前存在事务,则在当前事务的嵌套事务中执行;如果当前没有事务,则创建一个新的事务)等。根据业务需求,选择合适的事务传播机制可以确保事务的一致性和正确性。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring的事务传播机制是指在多个事务方法之间的调用中,事务应该如何传播和处理。Spring提供了多种事务传播机制,可以根据具体的应用场景选择合适的传播机制。下面是Spring中常用的事务传播机制:

    1. REQUIRED(默认):如果当前存在事务,则加入其中执行,如果不存在事务,则创建一个新的事务执行。该传播机制是最常用的,适用于大多数情况。

    2. SUPPORTS:如果当前存在事务,则加入其中执行,如果不存在事务,则以非事务的方式执行。该传播机制用于在非事务环境下执行,如果当前存在事务,则会加入并共享该事务。

    3. MANDATORY:如果当前存在事务,则加入其中执行,如果不存在事务,则抛出异常。该传播机制用于强制要求方法在事务中执行,如果没有事务,则抛出异常。

    4. REQUIRES_NEW:创建一个新的事务,并且如果当前存在事务,则将其挂起。该传播机制用于需要独立事务执行的方法,它会暂停当前的事务,创建一个新的事务来执行。

    5. NOT_SUPPORTED:以非事务的方式执行,如果当前存在事务,则将其挂起。该传播机制用于不希望方法在事务中执行的情况。

    6. NEVER:以非事务的方式执行,如果当前存在事务,则抛出异常。该传播机制用于不允许方法在事务中执行的情况。

    7. NESTED:如果当前存在事务,则创建一个嵌套事务,并在嵌套事务中执行,如果不存在事务,则创建一个新的事务执行。该传播机制用于需要嵌套事务的情况,嵌套事务是独立于外部事务的,可以进行回滚或提交。

    以上是Spring中常用的事务传播机制。在实际应用中,根据具体的业务需求和事务使用场景选择合适的传播机制,以保证事务的正确传播和处理。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部