Spring事务控制和回滚

Posted zhaoqiang1980

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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事务控制和回滚的主要内容,如果未能解决你的问题,请参考以下文章

阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API

Spring-事务管理重点

Spring 事务提交回滚源码解析

Spring 事务提交回滚源码解析

Spring——Spring中的事务使用注解(@Transactional)控制事务使用AspectJ框架控制事务

Spring_事务