spring 事务的传播级别
时间: 2023-06-23 14:04:18 浏览: 85
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:如果当前存在事务,则在嵌套事务中执行,否则新建一个事务。如果主事务提交,则子事务也会提交;如果主事务回滚,则子事务也会回滚,但是子事务回滚并不会影响主事务和其他子事务的执行。
在实际应用中,需要根据具体场景选择合适的传播级别。
相关问题
spring 事务传播级别
Spring框架提供了7种事务传播级别,用于控制多个事务方法之间相互调用时事务如何传播:
1. REQUIRED:默认传播级别,如果当前没有事务,就创建一个新事务;如果已经存在一个事务中,就加入到这个事务中。
2. SUPPORTS:如果当前存在事务,则加入该事务,如果不存在事务,则以非事务方式执行。
3. MANDATORY:必须在一个已经存在的事务中执行,否则将抛出异常。
4. REQUIRES_NEW:将当前事务挂起,创建一个新的事务运行,如果新事务执行失败,则回滚新事务,将当前事务恢复执行。
5. NOT_SUPPORTED:以非事务方式执行操作,如果当前有事务在运行,则将当前事务挂起。
6. NEVER:以非事务方式执行操作,如果当前有事务在运行,则抛出异常。
7. NESTED:创建一个嵌套事务,如果当前存在事务,则在嵌套事务内执行,否则创建一个新事务。如果嵌套事务执行失败,则回滚嵌套事务,并抛出异常,但不影响外层事务的执行。
可以通过在@Transactional注解中指定propagation属性来设置事务的传播级别。例如:
@Transactional(propagation=Propagation.REQUIRED)
spring事务传播级别
Spring事务传播级别是用来定义在一个事务方法被另一个事务方法调用时,如何处理事务的传播行为。Spring框架提供了七种不同的事务传播级别,分别是:
1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
3. MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
4. REQUIRES_NEW:创建一个新的事务,并挂起当前事务(如果存在)。
5. NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则挂起该事务。
6. NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。
7. NESTED:如果当前存在事务,则在嵌套事务中执行;如果当前没有事务,则创建一个新的事务。
阅读全文