12/12 事务细节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
事务细节:
isolation
propagation
如果有多个事务嵌套运行,子事务是否要和大事务共用一个事务

noRollbackFor Class[] -- 哪些异常事务可以不会滚
noRollbackForClassName
rollbackFor Class[] -- 哪些异常事务需要回滚
rollbackForClassName

异常分类:
运行时异常(非检查异常,比如除0):可以不处理:默认都回滚
编译时异常(比如file找不到):要么try-catch:默认不回滚

readOnly -boolean =true:设置为只读事务 加快查询速度,不用管事务的操作 不能用于增删改
timeout -int 三秒内执行不完就回滚,并且报TransactionTimedOutException


img

事务的传播:

​ 坐一辆车用REQUIRED

​ 坐新车用REQUIRED_NEW:当前事务总是使用一个新事务 如果已经有事务,会将之前事务挂起

任何地方崩异常,已经执行了的REQUIRED NEW 还是一定完成,都会成功

​ REQUIRED 事物的属性都是继承于大事务的

REQUIRES_NEW: 这个方法直接使用新的connection

XML方法配置事务

1
2
3
4
5
6
7
8
9
10
<aop:config>
<aop:pointcut id="txPoint" expression="execution(* com.runsstudio.service.*.*(..))"/>
<aop:advisor advice-ref="myAdvice" pointcut-ref="txPoint"></aop:advisor>
</aop:config>
<tx:advice id="myAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="checkout" propagation="REQUIRED" timeout="-1"/>
<tx:method name="get*" read-only="true"/>
</tx:attributes>
</tx:advice>
-------------文章已结束~感谢您的阅读-------------
穷且益坚,不堕青云之志。