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事务控制和回滚的更多相关文章
- Spring事务注解@Transactional回滚问题
Spring配置文件,声明事务时,如果rollback-for属性没有指定异常或者默认不写:经测试事务只回滚运行时异常(RuntimeException)和错误(Error). <!-- 配置事 ...
- Spring事务管理----事物回滚
Spring的事务管理默认只对未检查异常(java.lang.RuntimeException及其子类)进行回滚,如果一个方法抛出Checked异常,Spring事务管理默认不进行回滚. 改变默认方式 ...
- Spring事务超时、回滚的相关说明
事务超时: @Transactional(timeout = 60) 如果用这个注解描述一个方法的话,线程已经跑到方法里面,如果已经过去60秒了还没跑完这个方法并且线程在这个方法中的后面还有涉及到对数 ...
- Spring事务mysql不回滚:mysql引擎修改
若Spring中@Transactional 注解开启且配置没问题的话,很可能是mysql数据库引擎不支持. mysql引擎是MyISAM的话事务会不起作用,原因是MyISAM不支持事务和外键,改成支 ...
- 【Spring】Spring 事务控制
Spring 事务控制 Spring 事务控制介绍 JavaEE 体系进行分层开发,事务控制位于业务层,Spring 提供了分层设计业务层的事务处理解决方案. Spring 的事务控制都是基于 AOP ...
- SSM保姆级从创建项目到使用,包括事务和设置回滚
1. 简介 Spring 和 Mybaits整合 2. 创建项目 负责将代理类记性扫描,扫描的是Mapper接口所在的包,这个是mybatis提供的,所以会去找SqlSessionFactory 2. ...
- NESTED内部事务异常会回滚 外部事务不会回滚 ;内部事务没有异常,外部事务有异常 则整体事务都回滚
NESTED内部事务异常会回滚 外部事务不会回滚 :内部事务没有异常,外部事务有异常 则整体事务都回滚
- nestd事务如果报错了 则回滚到外部事物保存点 且外部事物如果没异常的话 会正常提交 nested事务并不会提交;如果外部事物报错了 内部事务会一同回滚
nestd事务如果报错了 则回滚到外部事物保存点 且外部事物如果没异常的话 会正常提交 nested事务并不会提交:如果外部事物报错了 内部事务会一同回滚
- SSM框架之Spring(5)JdbcTemplate及spring事务控制
Spring(5)JdbcTemplate及spring事务控制 ##1.JdbcTmeplate 它是 spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装.spring ...
随机推荐
- C++中的指针与引用的区别与联系
引用与指针实质上都是间接地指代另一个变量,引用相当于该变量的外号或者小名,而指针实质上是指向该变量的地址进而操作该变量 区别1:指针的地址与该变量不同,但引用的地址与该变量相同相同 #include& ...
- Java-学习-喜欢-品牌:互联网公司成为动物园,拟人化品牌形象真的那么有意思?
ylbtech-Java-学习-喜欢-品牌:互联网公司成为动物园,拟人化品牌形象真的那么有意思? 1.返回顶部 1. 当我们在思考如何在这个碎片化.多元化的时代找到真实的.不被标签的自我时,互联网中 ...
- ping一个网段的cmd程序
ping一个网段的cmd程序 今天发现只在cmd命令行工具中输入: FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i 即可.
- python面向对象 : 属性, 类方法, 静态方法
一. 属性 属性: 将方法伪装成一个属性,代码上没有什么提升,只是更合理. property应用 : 类似于bmi这种,area,周长.... 需要用到计算的. # 求BMI体质数:BMI = 体 ...
- [UE4]需要保存的数据
数据存储原则是“相关的放在一起,不相关的分开”. 如果存档有几十上百兆,如果放在一起存储容易出现问题(特别是网络游戏):断线.电脑死机.游戏出错等等,存档就会损坏,所以一定要分割存储.
- 梳理源码:spring ioc容器加载的流程图
- SAS 数值转日期
DATA _NULL_;FORMAT A YYMMDDN8.;B=PUT(20180101,$8.);A=INPUT(B,YYMMDD8.);PUT B= A=;RUN; 输出:47 DATA _ ...
- U3D学习003——编辑器使用
1.skybox 原来的render setting 在2017版本中是lighting标签environment中设置: 或者在摄像机对象中添加skybox组件,进行设置. 2.6张图实现自定义sk ...
- Javascript-string-Array
1.得到数组里重复的值 function getRepeat(ar){ //数组排序 var ary = ar.sort(); //创建装重复值的新数组 var newArr = new Array( ...
- scala语法在spark withScope上的应用
withSpout在spark中是用来做DAG可视化的,它在代码里的用法如下(以map为例,spark 2.0.0版本) def map[U: ClassTag](f: T => U): RDD ...