spring事务传播性是什么

fiy 其他 21

回复

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

    Spring事务传播性是指在一个事务方法调用另一个事务方法时,事务如何传播和管理的机制。Spring框架为事务管理提供了多种传播行为选项,使开发者能够灵活地控制事务的行为。

    Spring事务传播性共有七种选项,分别是:

    1. REQUIRED:如果当前有事务存在,就加入到当前事务中;如果当前没有事务,就创建一个新的事务。这是默认的传播行为。

    2. SUPPORTS:如果当前有事务存在,就加入到当前事务中;如果当前没有事务,就以非事务的方式执行。

    3. NEVER:如果当前有事务存在,就抛出异常;如果当前没有事务,就以非事务的方式执行。

    4. MANDATORY:如果当前有事务存在,就加入到当前事务中;如果当前没有事务,就抛出异常。

    5. REQUIRES_NEW:无论当前是否有事务存在,都会创建一个新的事务;如果当前有事务存在,就挂起当前事务。

    6. NOT_SUPPORTED:无论当前是否有事务存在,都以非事务的方式执行;如果当前有事务存在,就挂起当前事务。

    7. NESTED:如果当前有事务存在,就在当前事务嵌套一个新的事务;如果当前没有事务,就创建一个新的事务。嵌套事务是独立于外部事务的,有自己的提交和回滚。

    每种传播性都有不同的应用场景,我们需要根据实际需求选择合适的传播性。通过合理使用事务的传播性,可以确保事务的一致性和隔离性,提高系统的稳定性和可靠性。

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

    Spring事务的传播性是指在一个事务方法被调用时,该方法是否会加入到一个已经存在的事务中,或者创建一个新的事务。事务方法指的是被@Transactional注解注释的方法。

    Spring框架提供了七种不同的事务传播属性,分别是:

    1. REQUIRED(默认值):如果当前存在一个事务,则该方法将在该事务中执行,否则将会创建一个新的事务。这是最常用的传播行为,适用于大多数情况。

    2. SUPPORTS:如果当前存在一个事务,则该方法将在该事务中执行;否则,它可以在非事务环境中执行。

    3. MANDATORY:如果当前存在一个事务,则该方法将在该事务中执行;否则,抛出异常。

    4. REQUIRES_NEW:该方法总是会创建一个新的事务,并在自己的事务中执行。如果当前存在一个事务,则该事务会被挂起。这种传播行为适用于需要独立事务的情况。

    5. NOT_SUPPORTED:该方法不应该在事务中执行。如果当前存在一个事务,则该事务会被挂起。

    6. NEVER:该方法不应该在事务中执行。如果当前存在一个事务,则抛出异常。

    7. NESTED:如果当前存在一个事务,则该方法将在嵌套事务中执行。嵌套事务是一个独立的事务单元,它可以回滚,而不会影响外部事务的提交。如果外部事务已经提交,则内部事务将会被提交;如果外部事务已经回滚,则内部事务也会被回滚。

    事务传播属性的选择取决于具体的业务需求。通过选择适当的传播属性,可以实现事务的灵活管理,保证数据的一致性和完整性。

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

    Spring事务传播性是指在多个事务方法互相调用的情况下,事务是如何传播的规则。Spring事务传播性可以控制当前事务对于嵌套方法的影响,以及决定事务应该如何在方法调用之间传播。

    Spring框架中定义了七种事务传播性:

    1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。该传播性级别是最常用的级别。

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

    3. MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。

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

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

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

    7. NESTED:如果当前存在事务,则在当前事务的嵌套事务内执行;如果当前没有事务,则创建一个新的事务。

    在使用Spring事务时,可以通过在事务方法或类上使用@Transactional注解来设置事务传播性。下面具体说明每一种事务传播性的应用场景:

    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在线

分享本页
返回顶部