spring事物的传播行为有哪些

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring事务的传播行为包括以下几种:

    1. REQUIRED:如果当前存在事务,则加入该事务,如果不存在事务,则创建一个新的事务。这是最常用的传播行为,它保证在任何情况下都会有一个事务存在。

    2. SUPPORTS:如果当前存在事务,则加入该事务,如果不存在事务,则以非事务的方式执行。这种传播行为适用于不需要强制执行事务的操作。

    3. MANDATORY:如果当前存在事务,则加入该事务,如果不存在事务,则抛出异常。这种传播行为适用于必须在事务中进行的操作。

    4. REQUIRES_NEW:始终创建一个新的事务,并挂起当前的事务(如果存在)。这种传播行为适用于需要独立的事务执行的操作。

    5. NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则挂起该事务。这种传播行为适用于不需要事务支持的操作。

    6. NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。这种传播行为适用于不能在事务中执行的操作。

    7. NESTED:如果当前存在事务,则在当前事务的嵌套事务中执行,如果不存在事务,则创建一个新的事务。这种传播行为适用于需要创建嵌套事务的操作。

    每种传播行为都有其适用的场景,开发人员在使用事务时需要根据业务需求选择恰当的传播行为。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring事务的传播行为是指在多个方法之间进行事务传播和管理的策略。Spring框架提供了不同的传播行为选项,以满足不同的业务需求。下面列举了一些常用的Spring事务传播行为:

    1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果没有事务,则新建一个事务。这是最常用的传播行为,适用于大多数的业务逻辑。

    2. SUPPORTS:如果当前存在事务,则加入该事务;如果没有事务,则以非事务的方式执行。适用于不需要强制开启事务的方法。

    3. MANDATORY:如果当前存在事务,则加入该事务;如果没有事务,则抛出异常。用于要求方法必须在事务中执行的情况。

    4. REQUIRES_NEW:当前方法必须开启新的事务,并且暂时挂起当前事务(如果存在)。适用于需要独立事务的场景,比如在一个方法中调用另一个方法,需要将被调用方法独立出来并开启新的事务。

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

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

    除了上述列举的传播行为,Spring还提供了其他更特殊的传播行为,如NESTED(嵌套事务)和SUPPORTS_ONLY(仅在事务存在时才以事务方式执行)。选择合适的事务传播行为可以确保事务的正确处理和管理,保证数据的一致性和完整性。

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

    Spring事务的传播行为指的是在多个事务方法调用的情况下,事务的如何传播和管理。Spring框架为开发者提供了多种传播行为选项,以便根据实际需求来管理事务。下面将介绍几种常见的事务传播行为:

    1. REQUIRED:
      REQUIRED是Spring事务传播行为的默认选项。当一个方法被调用时,如果当前存在事务,则加入该事务中执行;如果没有事务,则创建一个新事务。如果被调用的方法发生异常,那么整个事务将回滚。REQUIRED是保证事务的基本传播行为选项。

    2. REQUIRES_NEW:
      REQUIRES_NEW表示无论当前是否存在事务,被调用的方法都会创建一个新的事务来执行。如果当前已经存在事务,则会挂起当前事务,并在被调用方法执行完后恢复原有事务。如果被调用的方法发生异常,仅仅回滚该方法的事务。

    3. SUPPORTS:
      SUPPORTS表示当前方法支持事务,如果当前存在事务,则将其加入到当前事务中;如果没有事务,则以非事务的方式执行。SUPPORTS主要用于读取操作,不会对数据库进行写操作。

    4. NOT_SUPPORTED:
      NOT_SUPPORTED表示当前方法不支持事务,如果当前存在事务,则将其挂起,并以非事务的方式执行。

    5. MANDATORY:
      MANDATORY表示当前方法必须在一个已存在的事务中执行,否则将抛出异常。MANDATORY用于强制要求事务的存在,如果不存在则报错。

    6. NEVER:
      NEVER表示当前方法不允许在事务中执行,如果当前存在事务,则抛出异常。

    7. NESTED:
      NESTED表示当前事务方法被嵌套执行,如果当前存在事务,则在当前事务的内部创建一个嵌套事务。嵌套事务是父事务的一部分,可以独立于父事务进行提交或回滚。如果父事务回滚,则所有嵌套事务也会回滚;如果嵌套事务回滚,则父事务可以根据需要决定是否回滚。

    除了以上介绍的常见事务传播行为外,Spring框架还提供了一些其他的传播行为选项,如SUPPORTS_READONLY、TIMEOUT等。开发者可以根据实际需求选择适合的事务传播行为,来控制事务的行为和管理。

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

400-800-1024

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

分享本页
返回顶部