spring什么是事务传递性

worktile 其他 95

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    事务传递性是指在一个事务中包含了多个子事务,当父事务被提交或回滚时,其子事务也会被相应地提交或回滚。

    在Spring框架中,通过使用Spring的事务管理器来实现事务传递性。Spring事务管理器可以将多个事务纳入一个父事务中,以实现事务传递性。

    Spring框架中定义了以下几种事务传递性的级别:

    1. REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新事务。这是默认的传递级别。

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

    3. MANDATORY:必须在一个已存在的事务中运行,如果当前没有事务,则抛出异常。

    4. REQUIRES_NEW:创建一个新事务,并在它自己的事务中运行。如果当前存在事务,则将其挂起。

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

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

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

    以上这些事务传递性级别可以根据需求进行配置,通过设置事务传递性级别,可以实现不同程度的事务控制和管理。

    总结起来,事务传递性是指通过Spring事务管理器实现多个事务之间的关联,使得父事务的提交或回滚操作可以影响到其子事务。不同的事务传递性级别可以满足不同的业务需求,提供更灵活的事务管理方式。

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

    在Spring中,事务传递性是指当一个方法调用另一个方法时,如果两个方法都被声明为事务,那么第二个方法的事务是否要参与第一个方法的事务。

    1. REQUIRED传递性:这是默认的事务传递属性。如果一个方法已经在一个事务中运行,而另一个方法被调用时也声明了事务,那么第二个方法会加入到第一个方法的事务中运行。如果第一个方法没有事务,则会新建一个事务来运行第二个方法。

    2. REQUIRES_NEW传递性:如果一个方法已经在一个事务中运行,而另一个方法被调用时也声明了事务,则第一个方法的事务会挂起,第二个方法会在一个新的事务中运行。这意味着每个方法都会有自己的事务,彼此独立。

    3. SUPPORTS传递性:如果一个方法已经在一个事务中运行,而另一个方法被调用时没有声明事务,则第二个方法会以非事务方式运行。如果第一个方法没有事务,则第二个方法也以非事务方式运行。

    4. NOT_SUPPORTED传递性:如果一个方法已经在一个事务中运行,而另一个方法被调用时声明了NOT_SUPPORTED传递属性,则第一个方法的事务会挂起,第二个方法会以非事务方式运行。

    5. MANDATORY传递性:如果一个方法已经在一个事务中运行,而另一个方法被调用时声明了MANDATORY传递属性,则第二个方法会加入到第一个方法的事务中运行。如果第一个方法没有事务,则会抛出异常。

    事务传递性在Spring中非常重要,可以确保多个方法的数据操作能够保持一致性和完整性。通过合理地设置事务传递属性,可以确保事务的正确执行,避免数据的不一致和丢失。

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

    事务传递性是指在多个事务之间的关系,一个事务执行成功后的结果是否会被其他事务所感知,并且其他事务是否能够使用该结果进行操作。

    在Spring中,有以下几种事务传递性:

    1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这种传递性是最常见的,它保证一系列的操作要么全部成功,要么全部失败。如果在当前事务的范围内调用其他带有REQUIRED传递性的方法,它们会在同一个事务中执行。

    2. REQUIRES_NEW:无论当前是否存在事务,都创建一个新的事务。如果当前存在事务,则将它挂起。这种传递性允许一个方法执行过程中,调用其他带有REQUIRES_NEW传递性的方法,它们互不干扰,各自独立地执行。

    3. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。这种传递性适用于不需要事务支持的操作,它避免了无谓的事务开销。

    4. NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则将它挂起。这种传递性适用于不需要事务支持的操作,它保证了操作的独立性。

    5. MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。这种传递性适用于必须在事务中执行的操作,如果没有事务,则中断执行。

    6. NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。这种传递性适用于必须在非事务状态下执行的操作,如果存在事务,则中断执行。

    7. NESTED:如果当前存在事务,则在当前事务中创建一个保存点,并在新的嵌套事务中执行操作;如果当前没有事务,则创建一个新的事务。这种传递性适用于对事务的嵌套使用,内部事务的提交或回滚不会影响外部事务的状态。

    在Spring中,通过使用@Transactional注解进行事务管理,可以灵活地控制事务的传递性。使用合适的事务传递性可以保证数据库的一致性和完整性,提高系统的可靠性和可维护性。

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

400-800-1024

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

分享本页
返回顶部