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

Spring事务控制和回滚

时间:2018-07-17 20:15:12      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:声明式   wan   spring事务   拦截器   spec   ng2   str   注解   spring 事务   

1在一个项目中ssh结构,spring2.5,事务控制采用的是tx拦截器的方式。

自己写了个 int a=1/0;异常抛出了,但是事务还是提交了,怎么搞都不行。

现将看到的一些事务控制总结下来:

事务控制默认回滚RuntimeException(数组越界,结果为0等),并且是notchecked异常。

注意:sql内部出现异常默认不会回滚

如果在Service中有 try ..catch的形式,则无法抛出异常,不会回滚。因此需要在catch中throw new runtimeException在方法上加上主动抛出。

在tx部分要注意可以设置 <tx:method roback-for=‘Exception‘,捕获自己指定的异常。如果使用声明式注解则为@Transactional(robackFor=Exception.class)

 

如果以上的方式还不行,就只能在Service的catch中使用以下的手动抛出。

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 

 

 

参考文章:

Spring transaction事务 roll back各种回滚)https://www.cnblogs.com/wangchuanfu/p/8110159.html

(Spring事务之使用tx标签配置拦截器)http://blog.sina.com.cn/s/blog_486c3b620100xuh7.html

Spring2.5事务配置的5种方法)https://www.cnblogs.com/gaoyoubo/articles/1861464.html

(Spring 事务属性分析)https://www.cnblogs.com/aliger/p/3898869.html

Spring声明式事务不回滚问题http://www.jianshu.com/p/f5fc14bde8a0

spring事务没回滚)https://www.cnblogs.com/lidelin/p/7266280.html

Spring事务控制和回滚

标签:声明式   wan   spring事务   拦截器   spec   ng2   str   注解   spring 事务   

原文地址:https://www.cnblogs.com/DennyZhao/p/9325568.html

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