spring事务有哪些级别 默认什么级别
-
Spring框架中的事务管理可以通过配置文件或者注解的方式实现,主要有以下几种事务级别:
- 事务传播行为级别(Propagation):事务传播行为用于指定在一个事务方法被另一个事务方法调用时,如何使用事务。常用的事务传播行为级别有:
- REQUIRED(默认级别):如果当前存在一个事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
- SUPPORTS:如果当前存在一个事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
- MANDATORY:如果当前存在一个事务,则加入该事务;如果当前没有事务,则抛出异常。
- REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。
- NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则挂起当前事务。
- NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。
- NESTED:如果当前存在一个事务,则在嵌套事务内执行;如果当前没有事务,则执行REQUIRED同样的操作。
- 隔离级别(Isolation):用于指定事务操作与其他并发事务之间的隔离程度。常用的隔离级别有:
- DEFAULT:采用数据库的默认隔离级别(由数据库管理)。
- READ_UNCOMMITTED:最低的隔离级别,允许读取未提交的数据。
- READ_COMMITTED:允许读取已提交的数据,避免脏读。
- REPEATABLE_READ:保证在同一个事务中多次读取同一数据时,数据保持一致。
- SERIALIZABLE:最高的隔离级别,保证读取数据的一致性和完整性,但效率较低。
-
回滚规则(Rollback):用于指定事务操作发生异常时,是否回滚事务。默认情况下,Spring中的事务是遇到RuntimeException异常时回滚。
-
超时设置(Timeout):用于指定事务操作的超时时间,单位为秒。超时时间是指在指定时间内未完成事务操作,则回滚事务。
-
只读(ReadOnly):用于指定事务操作是否只读。只读事务通常用于查询操作,可以提高并发性能。
默认的事务级别是REQUIRED,即如果当前存在一个事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
1年前 -
Spring事务的级别包括:REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED和NEVER。其中默认的事务级别是REQUIRED。
- REQUIRED:表示当前方法必须在一个事务中运行。如果当前方法正在一个事务中运行,那么方法将会在该事务中运行。如果当前方法没有在事务中运行,那么Spring将会开启一个新的事务。
- SUPPORTS:表示当前方法支持事务,但是如果存在一个事务,当前方法并不强制必须运行在事务中。
- MANDATORY:表示当前方法必须在事务中运行。如果当前方法没有在事务中运行,Spring将会抛出一个异常。
- REQUIRES_NEW:表示当前方法必须运行在一个新的事务中。当前方法会暂停当前的事务(如果存在),并且开始一个新的事务。
- NOT_SUPPORTED:表示当前方法不应该运行在事务中。如果当前方法在一个事务中运行,该事务将会被暂停,在方法运行完后事务将会恢复。
- NEVER:表示当前方法不应该运行在事务中。如果当前方法在一个事务中运行,Spring将会抛出一个异常。
默认的事务级别是REQUIRED。当没有特殊指明时,Spring事务管理器将会使用默认的事务级别。也就是说,如果当前方法正在一个事务中运行,那么方法将会在该事务中运行。如果当前方法没有在事务中运行,那么Spring将会开启一个新的事务。这个默认级别通常能够满足大部分的事务需求。
1年前 -
Spring事务的级别主要有以下几种:
-
PROPAGATION_REQUIRED:如果当前存在事务,则使用当前事务;如果当前没有事务,则创建一个新事务。这是默认的事务级别。
-
PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,则使用当前事务;如果当前没有事务,则以非事务方式执行。
-
PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,则使用当前事务;如果当前没有事务,则抛出异常。
-
PROPAGATION_REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。
-
PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则挂起当前事务。
-
PROPAGATION_NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。
-
PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务中执行;如果当前没有事务,则创建一个新事务。
默认情况下,Spring事务的级别是PROPAGATION_REQUIRED。这意味着如果当前存在事务,则在当前事务中执行;如果当前没有事务,则创建一个新事务。这是最常见的事务级别,也是大多数应用程序的默认选择。
在使用事务时,可以根据实际需求选择不同的事务级别。例如,在需要确保在一个完整的事务内执行的操作中,可以选择PROPAGATION_REQUIRED级别。而在一些无需事务支持的操作中,可以选择PROPAGATION_NOT_SUPPORTED级别。根据业务需求选择合适的事务级别可以提高系统的性能和可靠性。
1年前 -