介绍
在创建事务之前,已经有一个事务,此时有若干选项指定行为:
REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。默认值 。一般增删改使用
SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则把当前事务挂起。
NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于REQUIRED。
一般增删改用 REQUIRED
注解设置
@Transactional(propagation = Propagation.REQUIRED)
xml配置
<tx:advice id="transaction" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="query*" propagation="REQUIRED" read-only="true" />
<tx:method name="*insert*" />
<tx:method name="update*" />
</tx:attributes>
</tx:advice>