<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">@Transactional</span>
今天测试的同学帮忙测试出一个BUG,说是一个函数中的数据库操作执行失败,但是没有回滚。
期初我很诧异,我明明加了在类上面加了事务引用,怎么没回滚。
查来查去,发现是我对Transactional 了解不够清楚。
默认情况下,Exception是不会引起回滚操作的,RuntimeException才会引起回滚操作。
当然如果所有的Exception都要回滚的话,直接@Transactional(rollbackFor = Exception.class) 就可以了
另,使用@Transactional 注解需要配置
<!-- 基于注解的事务管理 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 基于注解的事务处理 -->
<tx:annotation-driven transaction-manager="transactionManager"/>