spring事务有哪些级别 默认什么级别
-
Spring事务提供了以下五个级别:
-
PROPAGATION_REQUIRED(默认级别):如果当前存在一个事务,则支持当前事务。如果不存在事务,则创建一个新的事务。
-
PROPAGATION_SUPPORTS:如果当前存在一个事务,则支持当前事务。如果不存在事务,则以非事务方式执行。
-
PROPAGATION_MANDATORY:如果当前存在一个事务,则支持当前事务。如果不存在事务,则抛出异常。
-
PROPAGATION_REQUIRES_NEW:创建一个新的事务,并且暂停当前事务(如果存在)。
-
PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则暂停事务。
默认级别是PROPAGATION_REQUIRED,即如果当前存在一个事务,则支持当前事务。如果不存在事务,则创建一个新的事务。
在Spring中,通过在方法上使用@Transactional注解来指定事务的级别。例如:
@Transactional(propagation = Propagation.REQUIRED) public void doSomething() { // 方法体 }使用该注解可以简化事务管理的操作,并且可以根据需要灵活地配置事务的级别。
1年前 -
-
Spring事务有四个级别,分别是:DEFAULT、READ_COMMITTED、READ_UNCOMMITTED和SERIALIZABLE。
-
DEFAULT(默认级别): 默认级别表示使用底层的数据库事务隔离级别。对大部分数据库而言,默认级别为READ_COMMITTED。Spring将数据库的事务级别映射到具体的数据库,保证事务的隔离性。
-
READ_COMMITTED(读已提交):在大多数数据库中,READ_COMMITTED是默认的隔离级别。该级别的事务能够读取并且提交其他事务已经提交的数据,但是不能读取其他事务未提交的数据,避免了“脏读”的问题。
-
READ_UNCOMMITTED(读未提交):该级别的事务允许读取其他事务未提交的数据,存在“脏读”的问题。这个级别很少被使用,因为它破坏了数据的一致性和事务隔离性。
-
SERIALIZABLE(串行化):该级别的事务是最高级别的隔离级别,保证了事务的串行执行。在这个级别下,一个事务在对数据进行读取和写入的时候会锁住整个数据表,避免了脏读、不可重复读和幻读的问题。但是也会牺牲性能损失,因为事务会相互等待。
默认情况下,Spring事务的隔离级别是DEFAULT,即使用底层数据库的默认隔离级别,多数情况下是READ_COMMITTED。然而,使用Spring的事务管理器,我们可以自由地选择和配置所需的事务隔离级别。
1年前 -
-
Spring框架中的事务管理有以下五种级别:
-
PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务;如果已经存在一个事务中,加入到这个事务中。这是默认的事务级别。
-
PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
-
PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。
-
PROPAGATION_REQUIRES_NEW:新建一个事务,如果当前存在事务,把当前事务挂起。
-
PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
默认的事务级别是PROPAGATION_REQUIRED。
1年前 -