@transactional中propagation
时间: 2023-04-17 14:02:29 浏览: 171
@Transactional中的propagation指事务的传播行为,即在一个方法调用另一个方法时,如何处理事务。propagation有以下几种取值:
- REQUIRED:默认值,如果当前没有事务,则新建一个事务;如果当前已经存在事务,则加入该事务。
- SUPPORTS:如果当前有事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
- MANDATORY:如果当前有事务,则加入该事务;如果当前没有事务,则抛出异常。
- REQUIRES_NEW:新建一个事务,如果当前存在事务,则挂起当前事务。
- NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则挂起当前事务。
- NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。
- NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则新建一个事务。
propagation的取值决定了事务的传播行为,可以根据实际情况选择合适的取值。
相关问题
@transactional注解propagation
@注解中的Propagation属性定义了事务的传播行为。它决定了在一个方法调用另一个被@Transaction注解的方法时,事务是如何被传播的。常见的Propagation属性值有以下几种:
1. REQUIRED:默认值。如果当前没有事务存在,则创建一个新的事务并在其中执行方法,如果有事务存在,则加入该事务并在其中执行方法。
2. REQUIRES_NEW:每次都创建一个新的事务,并在其中执行方法,如果当前有事务存在,则将其挂起。
3. SUPPORTS:如果当前有事务存在,则加入该事务并在其中执行方法,如果当前没有事务存在,则以非事务的方式执行方法。
4. MANDATORY:必须在一个事务中执行方法,如果当前没有事务存在,则抛出异常。
5. NOT_SUPPORTED:以非事务的方式执行方法,如果当前有事务存在,则将其挂起。
根据不同的Propagation属性,@Transactional注解可以控制事务的传播行为,从而实现不同的事务管理策略。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [@Transactional中的propagation属性](https://blog.csdn.net/windflybird/article/details/101775113)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
@Transactional(propagation)
@transactional(propagation = propagation.required) 表示在方法执行时开启一个事务,如果当前已经存在一个事务,则加入该事务中,如果不存在事务,则创建一个新的事务。这个注解通常用于需要保证数据一致性的业务方法中,确保在方法执行过程中,如果出现异常或错误,可以回滚事务,保证数据的完整性。
阅读全文