码迷,mamicode.com
首页 > 编程语言 > 详细

spring事务回滚的一些个人总结

时间:2014-08-11 17:50:32      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   文件   数据   for   2014   

1.  spring的事务边界是在调用业务方法之前开始的,业务方法执行完毕之后来执行commit or rollback(取决于是否抛出runtime异常). 
2.  如果抛出runtime exception 并在你的业务方法中没有try-catch到的话,事务会回滚,所以一般不在业务层try-catch。 

3. 一般不需要在业务方法中catch异常,一般在调用该service的action中catch,然后将结果导到出错页面,如果非要try-catch,在做完你想做的工作后(比如关闭文件等)一定要抛出runtime exception(这就要求我们在自定义异常的时候,让自定义的异常继承自RuntimeException,这样抛出的时候才会被Spring默认的事务处理准确处理),否则spring会将你的操作commit,这样就会产生脏数据.导致try-catch代码是画蛇添足。

或者以add,create,update,delete,merge开头的方法均启动事务,出现Exception时回滚。以find,get,pagedSearch,search,query,count开头的方法均为只读方法,不启动事务其他方法支持事务,但不是必须。

模板配置:

<!-- 事务通知 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" />
			<tx:method name="save*" propagation="REQUIRED" rollback-for="Exception" />
			<tx:method name="create*" propagation="REQUIRED" rollback-for="Exception" />
			<tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" />
			<tx:method name="del*" propagation="REQUIRED" rollback-for="Exception" />
			<tx:method name="merge*" propagation="REQUIRED" rollback-for="Exception" />
			<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="query*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="count*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="list*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="pagedSearch*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="search*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="*" propagation="SUPPORTS" rollback-for="Exception" />
		</tx:attributes>
	</tx:advice>


spring事务回滚的一些个人总结,布布扣,bubuko.com

spring事务回滚的一些个人总结

标签:style   blog   color   io   文件   数据   for   2014   

原文地址:http://blog.csdn.net/rotman173/article/details/38495361

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!