spring什么是事务传递性
-
事务传递性是指在一个事务中包含了多个子事务,当父事务被提交或回滚时,其子事务也会被相应地提交或回滚。
在Spring框架中,通过使用Spring的事务管理器来实现事务传递性。Spring事务管理器可以将多个事务纳入一个父事务中,以实现事务传递性。
Spring框架中定义了以下几种事务传递性的级别:
-
REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新事务。这是默认的传递级别。
-
SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
-
MANDATORY:必须在一个已存在的事务中运行,如果当前没有事务,则抛出异常。
-
REQUIRES_NEW:创建一个新事务,并在它自己的事务中运行。如果当前存在事务,则将其挂起。
-
NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则将其挂起。
-
NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。
-
NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则创建一个新事务。
以上这些事务传递性级别可以根据需求进行配置,通过设置事务传递性级别,可以实现不同程度的事务控制和管理。
总结起来,事务传递性是指通过Spring事务管理器实现多个事务之间的关联,使得父事务的提交或回滚操作可以影响到其子事务。不同的事务传递性级别可以满足不同的业务需求,提供更灵活的事务管理方式。
1年前 -
-
在Spring中,事务传递性是指当一个方法调用另一个方法时,如果两个方法都被声明为事务,那么第二个方法的事务是否要参与第一个方法的事务。
-
REQUIRED传递性:这是默认的事务传递属性。如果一个方法已经在一个事务中运行,而另一个方法被调用时也声明了事务,那么第二个方法会加入到第一个方法的事务中运行。如果第一个方法没有事务,则会新建一个事务来运行第二个方法。
-
REQUIRES_NEW传递性:如果一个方法已经在一个事务中运行,而另一个方法被调用时也声明了事务,则第一个方法的事务会挂起,第二个方法会在一个新的事务中运行。这意味着每个方法都会有自己的事务,彼此独立。
-
SUPPORTS传递性:如果一个方法已经在一个事务中运行,而另一个方法被调用时没有声明事务,则第二个方法会以非事务方式运行。如果第一个方法没有事务,则第二个方法也以非事务方式运行。
-
NOT_SUPPORTED传递性:如果一个方法已经在一个事务中运行,而另一个方法被调用时声明了NOT_SUPPORTED传递属性,则第一个方法的事务会挂起,第二个方法会以非事务方式运行。
-
MANDATORY传递性:如果一个方法已经在一个事务中运行,而另一个方法被调用时声明了MANDATORY传递属性,则第二个方法会加入到第一个方法的事务中运行。如果第一个方法没有事务,则会抛出异常。
事务传递性在Spring中非常重要,可以确保多个方法的数据操作能够保持一致性和完整性。通过合理地设置事务传递属性,可以确保事务的正确执行,避免数据的不一致和丢失。
1年前 -
-
事务传递性是指在多个事务之间的关系,一个事务执行成功后的结果是否会被其他事务所感知,并且其他事务是否能够使用该结果进行操作。
在Spring中,有以下几种事务传递性:
-
REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这种传递性是最常见的,它保证一系列的操作要么全部成功,要么全部失败。如果在当前事务的范围内调用其他带有REQUIRED传递性的方法,它们会在同一个事务中执行。
-
REQUIRES_NEW:无论当前是否存在事务,都创建一个新的事务。如果当前存在事务,则将它挂起。这种传递性允许一个方法执行过程中,调用其他带有REQUIRES_NEW传递性的方法,它们互不干扰,各自独立地执行。
-
SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。这种传递性适用于不需要事务支持的操作,它避免了无谓的事务开销。
-
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则将它挂起。这种传递性适用于不需要事务支持的操作,它保证了操作的独立性。
-
MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。这种传递性适用于必须在事务中执行的操作,如果没有事务,则中断执行。
-
NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。这种传递性适用于必须在非事务状态下执行的操作,如果存在事务,则中断执行。
-
NESTED:如果当前存在事务,则在当前事务中创建一个保存点,并在新的嵌套事务中执行操作;如果当前没有事务,则创建一个新的事务。这种传递性适用于对事务的嵌套使用,内部事务的提交或回滚不会影响外部事务的状态。
在Spring中,通过使用
@Transactional注解进行事务管理,可以灵活地控制事务的传递性。使用合适的事务传递性可以保证数据库的一致性和完整性,提高系统的可靠性和可维护性。1年前 -