1.Spring对事务的控制,默认情况下只对继承自RuntimeException和Error的非检查型异常进行回滚
继承自Exception的检查型异常默认不回滚
2.非检查型异常可以不用捕获,检查型异常必须try语句块处理或者声明抛给上级,才可以
3.如果异常被try{}catch{}了,事务将不回滚,如果想让事务回滚,必须抛出个非检查型异常
3.spring中的事务配置文件可以修改默认的回滚与否
<!-- 配置事务的通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="insert*" propagation="REQUIRED" no-rollbackfor="java.lang.RuntimeException/>
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="get*" read-only="true" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>