spring传播行为和隔离级别
时间: 2024-05-30 17:13:48 浏览: 8
Spring的传播行为(propagation behavior)用于定义一个事务如何进行传播,对于在事务范围内的嵌套事务,定义了如何传播目前事务的属性,Spring事务的传播行为共有7种,包括:
1. PROPAGATION_REQUIRED (默认):如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。
2. PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务的方式执行。
3. PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。
4. PROPAGATION_REQUIRES_NEW:新建一个全新的事务,并且暂停当前事务(如果存在)。
5. PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
6. PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
7. PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行,如果当前没有事务,则执行与PROPAGATION_REQUIRED相同的操作。
另外,Spring的隔离级别(isolation level)用于定义多个事务之间的相互影响程度,定义了多个事务如何相互隔离,Spring事务的隔离级别共有4种,包括:
1. ISOLATION_DEFAULT:使用底层数据库的默认隔离级别。
2. ISOLATION_READ_UNCOMMITTED:最低的隔离级别,允许脏读、不可重复读和幻读的发生。
3. ISOLATION_READ_COMMITTED:在同一个事务内,不会出现脏读,但是可能会出现不可重复读和幻读。
4. ISOLATION_REPEATABLE_READ:在同一个事务内,不会出现脏读和不可重复读,但是可能会出现幻读。
5. ISOLATION_SERIALIZABLE:将事务串行化,避免了脏读、不可重复读、幻读的发生,但是并发性能非常低。