关于使用@Transactional后如何在代码中部分绕过回滚 [问题点数:50分]

Bbs1
本版专家分:0
结帖率 50%
Bbs6
本版专家分:7743
Blank
红花 2019年5月 Java大版内专家分月排行榜第一
2019年4月 Java大版内专家分月排行榜第一
2019年1月 Java大版内专家分月排行榜第一
Blank
黄花 2019年2月 Java大版内专家分月排行榜第二
2018年12月 Java大版内专家分月排行榜第二
Bbs7
本版专家分:12484
Blank
金牌 2018年7月 总版技术专家分月排行榜第一
2018年6月 总版技术专家分月排行榜第一
Blank
红花 2019年3月 Java大版内专家分月排行榜第一
2018年9月 Java大版内专家分月排行榜第一
2018年8月 Java大版内专家分月排行榜第一
2018年7月 Java大版内专家分月排行榜第一
2018年6月 Java大版内专家分月排行榜第一
Bbs1
本版专家分:0
Bbs5
本版专家分:2409
Bbs7
本版专家分:12484
Blank
金牌 2018年7月 总版技术专家分月排行榜第一
2018年6月 总版技术专家分月排行榜第一
Blank
红花 2019年3月 Java大版内专家分月排行榜第一
2018年9月 Java大版内专家分月排行榜第一
2018年8月 Java大版内专家分月排行榜第一
2018年7月 Java大版内专家分月排行榜第一
2018年6月 Java大版内专家分月排行榜第一
@Transactional事务生效条件与样例
@Transactional生效条件 @Transactional注释的方法,不能是private修饰 @Transactional注释的方法,必须是有接口的方法实现(通用的Spring面向接口编程的套路) @Transactional注释的方法,必须要通过接口的方式调用,才能生效(我们知道,注解的本质也是代理,同一个类中直接调用本类的方法,是不会产生代理的,所以注解就都不会生效) 一般专门要留一...
@Transactional 出错后不会回滚
用了@Transactional后,执行了多条更新数据库语句,最后两条执行错误,但是没有<em>回滚</em>,简要<em>代码</em>如下: @Transactional public String Test(HttpServletRequest req){ try{ //<em>代码</em> }catch(Exception ex){ //捕捉异常 } return ""; } 搜索后找到一篇文章:http:
@Transactional,自己抛出异常时不会回滚
今天,面试的时候,突然被问到了一个点,结果,这个自己踩的坑,自己都忘记了。 前年,接手了一个项目,一直会有并发的情况,导致插入重复数据的情况。所以在项目中<em>使用</em>了事务 + 数据库锁,来处理并发。 伪<em>代码</em>如下: @Transactional public &amp;lt;T&amp;gt; T lock(Staff staff, Trade trade, ILockCallback&amp;lt;T&amp;...
SpringCloud之利用事务Transactional,发生异常时进行回滚操作
场景,当业务逻辑比较多,搞不好某一个环节就会出现异常。这个时候就要进行异常<em>回滚</em>的包装了 <em>代码</em>: 在方法体上加上: @Transactional(rollbackFor = Exception.class) 在方法体内,写try catch捕捉。当抛异常时:  TransactionAspectSupport.currentTransactionStatus().setRollback...
Spring添加了注解@Transactional事务不回滚总结
Spring加@Transactional事务不<em>回滚</em> 二、总结 1.首先你要确保你的配置文件正确,当然这个可能性很低,因为架构师都帮你弄好了(针对和当时的我一样的小白而言) 2.如果你的配置文件都正确,那么很有可能你执行数据库更新、插入的时候加了 try  catch 了,所以不
Springboot中声明事务@Transactional,为何有时候声明了事务报异常数据却不会回滚
@Transactional 这个注解相信大家都不陌生,这是事务的注解,什么是事务,无非就是未保证数据一致性,当出现任何异常时候出现数据<em>回滚</em> 注解是是不需要写提交事务的。 那么,最近我发现,这个@Transactional的注解,并不是所有异常都可以进行数据<em>回滚</em>,他只有是RuntimeException类及其子类(中文称为:运行时异常/unchecked异常/未检异常)异常的时候才会进行数据...
java异常-事务异常-java学习-try catch时,@Transactional注解 事务回滚不起作用的解决
  解决1、在catch的时候 自定义抛出了异常。然后就可能会这样。把抛出的异常改为RuntimeException。 解决2、加参数 @Transactional(rollbackFor=Exception.class) 参考https://blog.csdn.net/paul342/article/details/52330609...
关于Spring事务回滚@Transactional使用记录
测试@Transactional的在处理异常时是否生效, 首先这里随便写一个update的方法,对数据库进行更新操作,然后在操作完之后抛一个异常 @Override @Transactional(rollbackFor = {Exception.class}) public String alterUser(){ try { User ...
@Transactional注解事务手动回滚并且返回错误信息
service层方法名注解 @Transactional(rollbackFor=Exception.class) try{ }catch (Exception e) {  e.printStackTrace();  //打印错误信息 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回...
在springboot中关于@Transactional事务注解不能回滚的原因
@Override @Transactional(readOnly = false,rollbackFor=Exception.class,propagation=Propagation.REQUIRED) public ResultBean&amp;lt;String&amp;gt; test(GoodsInfo goodsInfo) { try { GoodsInfo goodsInfo1 ...
spring @Transactional注解用于事务回滚案例
这里基于小编的这篇博文的spring配置和实体类,service类为基础,解释@Transactional注解: https://blog.csdn.net/csdnliuxin123524/article/details/80935836; 注意这里@Transcational注解起作用的前提是要<em>使用</em>spring的声明式事务: &amp;lt;!-- 配置声明式事务 --&amp;gt; &amp;...
关于Spring的@Transactional注解失效以及事务无法回滚问题
<em>关于</em>Spring的@Transactional注解失效以及事务无法<em>回滚</em>问题@Transactional失效问题最近写的项目中需要一个service中的<em>部分</em>事务执行完就被commit,但是<em>部分</em>service需要失败<em>回滚</em>。因此写在一个大的service中并且加上@Transactional显然是无法满足需求的。 因此这是需要把原先的一个service服务拆分,如原先的serviceA被拆分成servic
@Transactional 异常并未回滚
@Transactional 今天测试的同学帮忙测试出一个BUG,说是一个函数中的数据库操作执行失败,但是没有<em>回滚</em>。 期初我很诧异,我明明加了在类上面加了事务引用,怎么没<em>回滚</em>。 查来查去,发现是我对Transactional 了解不够清楚。 默认情况下,Exception是不会引起<em>回滚</em>操作的,RuntimeException才会引起<em>回滚</em>操作。 半瓶
@Transactional 回滚不生效原因
@Transactional <em>回滚</em>不生效原因 事务的管理方式有两种,第一种是编程式事务管理,需要将数据库的自动提交等取消,并且需要自己编写事务<em>代码</em>,第二种则是声明式事务管理模式,spring利用spring AOP特性编写了注解即题目中所提到的方式来管理事务,避免开发人员编写大量的事务<em>代码</em>。 一、特性 先来了解一下@Transactional注解的特性吧,可以更好排查问题 1. servi...
SpringBoot @Transactional 事务,运行异常进行事务回滚方法
直接上<em>代码</em>了: 1.首先需要在方法体上加上@Transactional表示支持事务 2.如果异常被抓起之后,需要<em>回滚</em>只能手动<em>回滚</em>,否则事务会认为异常已经被处理,就不在进行<em>回滚</em>     @Autowired     AcpgiftMapper acpgiftMapper;     @Transactional     public int tests() {         Acpgift e...
@Transactional注解事务不回滚不起作用无效
这几天在项目里面发现我<em>使用</em>@Transactional注解事务之后,抛了异常居然不<em>回滚</em>。后来终于找到了原因。 如果你也出现了这种情况,可以从下面开始排查。 一、特性 先来了解一下@Transactional注解事务的特性吧,可以更好排查问题 1、service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务管理,在每个业务方法执行时都会开...
注解@Transactional 出现异常不回滚 不起作用
<em>关于</em><em>使用</em>注解@Transactional,手动抛出异常不<em>回滚</em>现象总结: 我用的是自定义异常直接继承Exception异常,在实际操作中,出现异常后没有<em>回滚</em>,还是把数据写入数据库了。 查了一下资料,只有runtimeexception并且没有被try catch处理的异常才会<em>回滚</em>。另外Transactional可以指定<em>回滚</em>异常,然后我用@Transactional(rollbackFor=Exc...
事务@Transactional和异步@Async注解失效
问题场景重现 场景一: Spring的异步执行注解@Async,在调用这个方法的时候发现,不对劲,耗时的逻辑我已经加入到异步取做了,怎么接口请求的响应这么慢,赶紧看日志,懵X,加了异步注解,却没有异步执行。 场景二: 在项目中用到@Transactional注解实现事务是必须滴,如果你还在用xml配置,那我只能说……。  但是有时候我们会发现在方法上加了@Transactional注解却...
Spring中@Transactional事务回滚失效
一、<em>使用</em>场景举例在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用。下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员。但是在执行的时候可能会出现这种情况,我们先删除部门,再删除成员,但是部门删除成功了,删除成员的时候出异常了。这时候我们希望如果成员删除失败了,之前删除的部门也...
关于spring中@Transactional注解抛出异常不回滚的现象
今天在开发中,遇到了如题这样的问题,我自己手动抛出异常,数据还是会写入的数据库中,并且不会发生<em>回滚</em>,导致产生了垃圾数据。后来上网查了一下,发现spring中,注解的事务<em>回滚</em>是默认RunTimeException才会<em>回滚</em>,如果抛出的不是RunTimeException,spring是默认不会<em>回滚</em>的。  并且,你的程序中try catch了,哪怕是RunTimeException,也是不会<em>回滚</em>的。一定
运用@Transactional,自己抛出异常时不会回滚的原因
一、 当你读这篇文章的时候,假如读者是在整合j2EE的三大框架式遇到这个问题,那应该就是下面这个问题:         我记得当时我遇到这个问题的时候,是因为数据库的表,不支持事务!如果mysql不支持存储引擎,它将以MyISAM表创建表,这是非事务性表。一般修改成InnoDB.       假如有兴趣了解 mysql中 " engine=innodb " 以及 " engine=inno
spring中事务@Transactional失效,不回滚
我在spring中<em>使用</em>@Transactional标注后,发现并没有效果,多方求解最终找出原因。以下是一些<em>使用</em>此标签的注意事项,如果不按这些规矩来就会失效: 1、在Spring启动项中开启事务 @EnableTransactionManagement 2、@Transactional只作用于public方法上,如果方法是private等其他作用域就不起作用 3、如果@Transaction...
@Transactional事务出现异常不回滚的处理
一、背景: 目前很多项目的事务处理都是利用Spring的注解式事务实现的(@Transactional)。  在测试事务<em>回滚</em>的过程中发现如下现象:   throw new RuntimeException(&quot;xxxxxxxxxxxx&quot;); 事务<em>回滚</em>   throw new Exception(&quot;xxxxxxxxxxxx&quot;);        事务没有<em>回滚</em>    二、<em>关于</em>spring事务<em>使用</em>...
Spring使用注解@Transactional事物手动回滚
手动<em>回滚</em>:方法1:在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动<em>回滚</em>,这样上层就无需去处理异常(现在项目的做法) 方法2:例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw new Run...
@Transactional事务回滚不生效,注解的继承
<em>关于</em>注解的继承 刚在群里有个人问怎么事务<em>回滚</em>不生效,然后截图一看,@Transactional打在接口上。这毫无疑问就是错误的根源,让他把@Transactional写在实现方法上就解决了。 众所周知,注解一般不能被继承。但是准确的说, 子类其实是可以继承父类的type注解的,如果需要继承父类的方法上的注解,就需要加一个@Inherited元注解。 <em>关于</em>元注解大家可通过 https://blog....
spring事务不回滚throw的Exception异常的解决方法
spring事务中,throw的Exception异常事务不会<em>回滚</em>,原因是: 用 spring 事务管理器,由spring来负责数据库的打开,提交,<em>回滚</em>.默认遇到运行期例外(throw new RuntimeException("注释");)会<em>回滚</em>,即遇到不受检查(unchecked)的例外时<em>回滚</em>;而遇到需要捕获的例外(throw new Exception("注释");)不会<em>回滚</em>,即遇到受检查
@Transactional 事务回滚 分析
@Transactional 事务<em>回滚</em>   Spring的AOP事务管理默认是针对unchecked exception<em>回滚</em>(运行期异常,Runtime Exception)。 unchecked ,就是不用手工写try catch的exception   Exception作为基类,下面还分checked exception和unchecked exception。如果客户端可以通过...
关于Spring注解式事务@Transactional的简单描述
一、背景: 目前很多项目的事务处理都是利用Spring的注解式事务实现的(@Transactional)。 在测试事务<em>回滚</em>的过程中发现如下现象: throw new RuntimeException("xxxxxxxxxxxx"); 事务<em>回滚</em> throw new Exception("xxxxxxxxxxxx"); 事务没有<em>回滚</em> 二、<em>关于</em>spring事务使...
@Transactional注解回滚问题
@Transactional(rollbackFor=Exception.class) 这个的意思是指定<em>回滚</em>的异常,我直接就指定了Exception。也就是只要是Exception或者是Exception的子类,那么在此方法中,都会进行<em>回滚</em>。当然,还有notRollbackFor,这个是指定异常不<em>回滚</em>。 原文:https://blog.csdn.net/singgel/article/detail...
Spring事务异常回滚。TransactionAspectSupport(学习理解)
例:      类似这样的方法不会<em>回滚</em> (一个方法出错,另一个方法不会<em>回滚</em>) :   if(userSave){    try {    userDao.save(user);    userCapabilityQuotaDao.save(capabilityQuota);    } catch (Exception e) {    logger.info(&quot;能力开通接口,开...
Spring MVC @Transactional注解方式事务无法回滚的解决办法
前文提到,最新换了框架,新项目用SpringMVC + spring JdbcTemplate。搭框架时,发现了一个事务无法正常<em>回滚</em>的问题,记录如下:首先展示问题:Spring applicationContext.xml配置:[html] view plaincopy           <bean id=“dataSource” class=“org.springframework.jndi.
运用@Transactional,自己抛出异常时不会回滚的原因,经验之谈
 查看spring API可知 http://www.kuqin.com/spring2.0_doc/index.html对EJB来说,默认的行为是EJB容器在遇到系统异常(通常指运行时异常)时自动<em>回滚</em>当前事务。EJB CMT遇到应用异常(例如,除了java.rmi.RemoteException外别的checked exception)时并不会自动<em>回滚</em>。默
[spring,mysql] spring使用注解式事务声明(@Transactional)无法回滚
@Transactional事务<em>回滚</em> 在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。 Spring默认情况下会对运行期例外(RunTimeException)进行事务<em>回滚</em>。这个例外是unchecked 如果遇到checked意外就不<em>回滚</em>。 如何改变默认规则: 1 让checked
spring boot @Transactional注解事务不回滚不起作用无效
参考资料:https://blog.csdn.net/u011410529/article/details/54287307https://my.oschina.net/happyBKs/blog/1624482当@Transactional不起作用如何排查问题。可以按照以下几个步骤逐一确认:1、首先要看数据库本身对应的库、表所设置的引擎是什么。MyIsam不支持事务,如果需要,则必须改为Innn...
捕获异常,手动让Spring事务回滚
在spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会<em>回滚</em>的,如果没有自己捕获异常则事务会<em>回滚</em>,如下例 比如配置文件里有这么条记录: [html] view plain copy  print? bean id="dataSource" class="xxx">  
Spring中的@Transactional事物回滚实例源码
Spring中的@Transactional事物<em>回滚</em>实例源码
手动回滚@Transactional事物
1. 方法上要有@Transactional注解 2. 在需要<em>回滚</em>的地方: TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 例: @Override @Transactional public Object wordEnter(List wordTest) throws Exce...
Spring MVC @Transactional注解方式事务无法回滚原因及解决方案
近期在做一个接口,采用的是Spring MVC的框架写的,但是当配置好框架,写完方法之后,发现在service层加了@Transactional注解的方式,竟然无效,无法进行事务的<em>回滚</em>,发现一般问题都不存在,一般@Transactional注解了,事务无法<em>回滚</em>是因为三个原因: 1.方法可能不是public的声明 2.异常类型是不是unchecked异常 这个说明一下,在@Transactio...
@Transactional事务管理下独立出一个事务对数据库进行操作,防止事务回滚了不想要回滚的更改
情景:         由于现在做的项目给前端的不正常提示都是通过抛出异常来返回的,抛出异常后会在拦截器中处理异常并将前端能看懂的提示返回给前端。          最近有个需求是登录错误将数据库的连续登录错误次数加1,成功错误次数清零,那么在同一事务下正常操作数据库进行加1,那么在登录错误后抛出异常“登录错误”,事务会<em>回滚</em>,导致加1的操作没有更新到数据库。          开始考虑利用多...
添加事务回滚@Transactional标签后JUnit测试报错。com.sun.proxy.$Proxy22
添加事务<em>回滚</em>@Transactional标签后JUnit测试报错。(服务器运行并不报错) 无法理解的错误,怎么会指向一个完全没见过的类。 解决方法: 在<em>回滚</em>驱动中添加属性: &amp;lt;proxy-target-class = &quot;true&quot;&amp;gt; 由于spring版本低,这里spring自动<em>使用</em>了cglib代理。就是所谓的子类继承。 未声明此属性,或者运行类没有继承接口,都会自动<em>使用</em>cgl...
@Transactional事务几点注意
这里面有几点需要大家留意: A. 一个功能是否要事务,必须纳入设计、编码考虑。不能仅仅完成了基本功能就ok。 B. 如果加了事务,必须做好开发环境测试(测试环境也尽量触发异常、测试<em>回滚</em>),确保事务生效。 C. 以下列了事务<em>使用</em>过程的注意事项,请大家留意。 1. 不要在接口上声明@Transactional ,而要在具体类的方法上<em>使用</em> @Transactional 注解,否则注解可能无效。
SpringMVC @Transactional注解方式事务失效的解决办法
SpringMVC @Transactional注解方式事务失效的解决办法
JPA的事务注解@Transactional总结
@Transactional事务<em>使用</em>总结: 异常在A方法内抛出,则A方法就得加注解 多个方法嵌套调用,如果都有 @Transactional 注解,则产生事务传递,需要 Propagation.REQUIRED 如果注解上只写 @Transactional 默认只对 RuntimeException <em>回滚</em>,而非 Exception 进行<em>回滚</em> 如果要对 checked Exceptions 进...
MySQL操作成功之后Redis操作失败的回滚问题
@Transactional
Spring管理的事务:如何配置回滚及try catch情况下的回滚
spring 的默认事务机制,当出现unchecked异常时候<em>回滚</em>,checked异常的时候不会<em>回滚</em>; 异常中unchecked异常包括error和runtime异常,需要try catch或向上抛出的异常为checked异常比如IOException,也就是说程序抛出runtime异常的时候才会进行<em>回滚</em>,其他异常不<em>回滚</em>,可以配置设置所有异常<em>回滚</em>:  [html] view
单元测试 @Transactional 注解
简单的对比介绍下用 @Transactional 注解和 不<em>使用</em>的区别 @Before public void setUp() throws Exception { Software software = new Software(); software.setViewable(false); software.setSoftChName("r
正确的使用@Transactional进行数据库事务处理
在spring工程中 中<em>使用</em>@Transactional实现事务,经常会出现事务失效的现象,是因为用@Transactional实现事务有特殊的要求: 1、只能是bean对象的public接口<em>使用</em>@Transactional 2、只能通过bean对象<em>使用</em>@Transactional接口怎么理解这两个条件呢?通过一个实例场景来理解一下。 业务需求,往数据库person表中添加数据,添加数据前,给
运用@Transactional,自己抛出异常时不会回滚的原因
[b]一、 当你读这篇文章的时候,假如读者是在整合j2EE的三大框架式遇到这个问题,那应该就是下面这个问题:[/b]         我记得当时我遇到这个问题的时候,是因为数据库的表,不支持事务!如果mysql不支持存储引擎,它将以MyISAM表创建表,这是非事务性表。一般修改成InnoDB.       假如有兴趣了解 mysql中 &quot; engine=innodb &quot; 以及 &quot; engi...
spring 事务回滚代码回滚
1、遇到的问题   当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误。伪<em>代码</em>如下: public method() { Dao1.save(Person1); Dao1.save(Person2); Dao1.save(Person2);//假如这句发生了错误,前面的两个对象会被保存到数据库中 Dao1.save(Person2); ...
使用Junit单元测试事务无法回滚的问题(spring事务和断路器-Hystrix冲突)
在<em>使用</em>Junit的时间发现事务无法<em>回滚</em>,后来把Hystrix断路由删掉发现可以的,源码调式发现Hystrix和sqlsessionFactory<em>使用</em>的不是同一个contection,最后是将断路由的策略改成信号量(SEMAPHORE)解决的,目前没找到断路由线程池(THREAD)策略和Junit事务共存的办法。综合上述,配置改为如下即可解决:hystrix.command.default.exec...
java 事务提交与回滚(commit与rollback)代码(含注释)
事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元 事务存在提交和<em>回滚</em>两种状态: (1)commit:提交事务,会将磁盘缓存中的数据写入磁盘的数据库中,一般数据库是自动提交,因此修改以后数据库就会发生变化。 (2)rollback:数据<em>回滚</em>,将事务中已经执行成功的<em>部分</em>回到最初的状态。 案例:银行转账,a将100元转给b,存在两个对数据库更...
atomikos 配置好后 @transactional 注解不生效的问题
最近这几天玩分布式事务的,<em>使用</em>  atomikos ,配置好  atomikos  后再Service层添加事务注解,可是一直有个问题,注解不生效。刚开始以为表不支持事务,可看了一下表类型是InnoDB ,是支持事务的。  后来我尝试通过硬<em>代码</em>  jtm.getUserTransaction().begin(); 和 jtm.getUserTransaction().commit(); 却是有事务
Spring中声明式事务的注解@Transactional的参数的总结(REQUIRED和REQUIRES_NEW的与主方法的回滚问题)
一、事务的传播行为 1.介绍 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。 2.属性 事务的传播行为可以由传播属性指定。Spring定义了7种类传播行为。 系统默认的是REQUIRED属性。 常用的是REQUIRED和REQUIRES_NEW,所以此处只说明这两种属性。 下
java-mybatis、springmvc 整合,使用 @Transactional 时遇到的事务相关问题
java-mybatis、springmvc 整合,<em>使用</em> @Transactional 时遇到的事务相关问题 目标:用最简单的配置,<em>使用</em> spring @Transactional 注解管理事务 一、问题及解决方案 问题1:配置错误 描述:已经<em>使用</em> @Transactional 注解,但是在 mybatis 的 sql track 检测到,“Closing non tran
Spring事物手动回滚
手动<em>回滚</em>: 方法1:在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动<em>回滚</em>,这样上层就无需去处理异常(现在项目的做法)  方法2:例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw n
spring中事物回滚与异常try catch相关
Propagation.REQUIRED ->事物传播机制-> 当方法A调用方法B,方法B需要有独立的事物时,需要<em>使用</em>此事物传播机制.然而.当A与B在同一类时,此时B的独立事物是不生效的.解决方式一是:需要将A和B独立于两个不同的类中;二是如果两者处于同一业务层,则需要获取spring中的该对象的代理对象,然后调用方法B.如springApplicationUtils.getApplication
spring的注解事务与try catch 异常处理
Spring的默认事务机制,当出现unchecked异常时候<em>回滚</em>,checked异常的时候不会<em>回滚</em>; 异常中unchecked异常包括error和runtime异常,需要try catch或向上抛出的异常为checked异常比如IOException,也就是说程序抛出runtime异常的时候才会进行<em>回滚</em>,其他异常不<em>回滚</em>,可以配置设置所有异常<em>回滚</em>:  [html] view
Spring注解声明的事务@Transaction出现异常后没有回滚
今天用spring+hibernate做项目的时候,测试事务是否起作用的时候, 发现了一个问题,我在service层,同时更新两张表。 第一张表的dao层更新方法正常更新, 第二张表的dao层故意让其抛异常。 <em>代码</em>如下: service层: @Transaction public void saveInfo(Flight flight,Passenger passenger){ fl
被忽略的Spring3小改进——支持多数据源的@Transactional事务注解
 难经7:被忽略的Spring3小改进——支持多数据源的@Transactional事务注解 liuu.iteye.com 2011-3-23 [问题] 近日,有同事问起,有个项目在配置Spring事务时,<em>使用</em>了@Transactional注解,但这个项目<em>使用</em>了多个数据源,而事务注解只对第一个起作用,咋办?   [探幽] 一听之下,想起在用@Transactional配置
spring手动回滚事务
在Spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会<em>回滚</em>的,如果没有自己捕获异常则事务会<em>回滚</em>,如下例: .... 例子如下: @Transactional(rollbackFor = { Exception.class
手动提交事务和回滚使用典例
package jdbc; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import
springmvc + mybatise 一个service 处理处理多个mapper 事物不回滚
 问题出现情况: 声明式事物@Transactional 在一个service调用了两个不同mapper 先后update两个数据,人为模拟后一个mapper异常,发现第一个mapper会提交数据。 网上有两种解决方法 第一个 方法 ,在@Transactional 调整事物传播方式从默认requared改为NESTED,并加入rollbackFor=Exception.class,修
Transactional注解无效,不支持回滚问题(1)
目前在学习SpringBoot,在<em>使用</em> @Transactional 后,出错无法<em>回滚</em> 一开始是以为没捕捉到异常,于是写成 @Transactional(rollbackFor = Exception.class) 重新跑起来后,还是不能<em>回滚</em>(即还是有数据插入到库)。 检查<em>代码</em>也是与学习视频中的<em>代码</em>一致。   百度了解到: SpringBoot2.0中,Hibernate创建Mysq...
(MySQL)Spring3+Mybatis3使用注解式事务声明(@Transactional)无法回滚
按以下步骤进行检查: 1、检查下Spring3配置没问题(略); 2、检查Log4J日志输出,确实有进行事务<em>回滚</em>动作; 3、检查下MySQL后台日志输入,确实有进行“rollback”操作; 上网查找一番,终于找到解决方法!原来执行事务<em>回滚</em>的表默认“表类型=MyISAM“(网上说:MyISAM不支持事务!这个我不太清楚) <em>使用</em>如下语句更改表类型为”InnoDB“: alter tabl
浅谈Spring中的事务回滚
 <em>使用</em>Spring管理事务过程中,碰到过一些坑,因此也稍微总结一下,方便后续查阅。1.<em>代码</em>中事务控制的3种方式编程式事务:就是直接在<em>代码</em>里手动开启事务,手动提交,手动<em>回滚</em>。优点就是可以灵活控制,缺点就是太麻烦了,太多重复的<em>代码</em>了。声明式事务:就是<em>使用</em>SpringAop配置事务,这种方式大大的简化了编码。需要注意的是切入点表达式一定要写正确。注解事务:直接在Service层的方法上面加上@Trans...
spring 事务日志
事务方法日志: reating new transaction with name ]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-ExceptionAcquired Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@1ff05076] for JDBC transactionSwi...
Spring中Transactional不添加rollbackFor等属性时的事务回滚问题
昨天同事说Spring的Transactional必须添加rollbackFor = Exception.class,否则事务不会<em>回滚</em>。但我原来试过,抛出RuntimeException时是会<em>回滚</em>的。于是查看Spring的Transactional的API文档,发现下面这段:If no rules are relevant to the exception, it will be treated like DefaultTransactionAttribute (rolling back on runtim
[转]使用事务时应该避免的陷井 @Transactional
前提: spring事务传播属性  在 spring的 TransactionDefinition接口中一共定义了六种事务传播属性:   PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。  PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。  PROPAGATION_MAND...
Spring事务异常回滚,try catch 捕获异常不回滚
      今天敲项目的时候一个方法有两个事务,用了try catch之后一直出现一个报错一个不报错,不报错的却不<em>回滚</em>的现象,仔细检查解决问题   例:一个方法报异常,另一个方法不会<em>回滚</em> try { userDao.save(user); userCapabilityQuotaDao.save(capabilityQuot...
@Transactional注解事务回滚在控制层不起作用
首先需要添加注解方式配置事务 controller<em>代码</em> shopService.insertUserAndShop(shop, adminuser); ShopServiceImpl<em>代码</em> @Override @Transactional(propagation=Propagati
java中异常处理finally代码块的处理
[code=&quot;java&quot;]package cn.javass.hello.servletimpl.vo; import java.io.*; public class TestFinally { public static void main(String[] args) { FileInputStream fs=null; try{ f...
SpringBoot @Transactional 中捕获异常并回滚解决方法
业务需求:需要捕获到@Transactional中的异常,并不影响事物<em>回滚</em>@Transactional(rollbackFor = Exception.class) public void test() { try { updata(); updata2(); } catch (Exception e) { ...
spring结合mysql事务注解@Transactional不起作用的问题
最近遇到的一个比较诡异的问题,貌似各种配置都正确了,事务不起效。 首先resin服务器的配置文件连接数据库的配置如下: &amp;lt;database&amp;gt; &amp;lt;jndi-name&amp;gt;jdbc/bbs7_app&amp;lt;/jndi-name&amp;gt; &amp;lt;driver&amp;gt; &amp;lt;type&amp;gt;com.mysql.jdbc.jdbc2.optional.My...
方法中既有hibernate又有jdbc,加了@Transactional但事物回滚异常
写接口的时候,如果是数据库模式,经常会需要从对方数据库中直接提取数据,然后稍做处理,插入wms数据库,此时,一般就会在manager中既用到hibernate又用到jdbc,伪<em>代码</em>如下:其中接口getErpCompanyRowData方法是加了@Transactional的。   /**处理单条客户信息*/ 1 public void getErpCompanyRowData(Resul...
Spring MVC中关于@Transactional注解的使用
上个月在搞毕业设计的时候,需要对在程序中对更新、插入语句进行事务管理,当用户输入不合理或者出现某种异常的时候及时的<em>回滚</em>事务,保证数据的正确性。在网上查找相关资料得知大多数时候用的是@Transactional这个注解,<em>关于</em>这个注解的<em>使用</em>方法和自己遇到的问题我整理为以下几点: 第一步:除了Spring MVC的ApplicationContext的常规配置(诸如dataSource之类),需要配置
springboot2.X版本得@Transactional注解事务不回滚不起作用
参考文章  https://my.oschina.net/happyBKs/blog/1624482   https://blog.csdn.net/u011410529/article/details/54287307 基本涵盖了事务所有得解决方法  我得情况是 在一个service中的一个没有事务管理得方法,调用了一个有事务管理得方法,在这种情况下 spring容器是不知道,所以事务是不起...
关于设置事务回滚保存点的设置
下面用伪<em>代码</em>说明ingres数据库事务执行失败后全部<em>回滚</em>的实现过程 :   try { savepoint(sp); //如果此处 保存点所依赖的transaction_handle事务句柄由connect()连接数据库时获取,则创建保存点成功,可以用rollbac
@Transactional注解事务不回滚不起作用无效(转载)
原文请查看 这几天在项目里面发现我<em>使用</em>@Transactional注解事务之后,抛了异常居然不<em>回滚</em>。后来终于找到了原因。 如果你也出现了这种情况,可以从下面开始排查。 一、特性 先来了解一下@Transactional注解事务的特性吧,可以更好排查问题 1、service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务管理,在每个业务方法执行时都会开...
service层@Transactional事务控制使用以及注意
  @Service @Transactional public class CeshiService { @Autowired LoginFeignClient loginFeignClient; @Transactional(rollbackFor = Exception.class) public void test(){ User ...
配置了AOP报错后事务并未回滚
原文地址:https://blog.csdn.net/xianymo/article/details/50696392 &amp;lt;tx:advice id=&quot;txAdvice&quot; transaction-manager=&quot;transactionManager&quot;&amp;gt; &amp;lt;tx:attributes&amp;gt; &amp;lt;!-- 传播行为 --&amp;gt; &amp;lt;tx:method na...
【问题解决】SSM-@Transactional注解事务无效探讨
Spring SpringMVC MyBatis框架中-@Transactional注解事务无效解决方法SpringMVC-Spring-MyBatis框架 数据库:SQL SERVER 2008 以前都是用的MySQL数据库,没有出现这个问题,现在换成sql server了,结果事务没有起作用了。 经过一番测试: 排除以下几个问题: 1.数据库原因,不存在的。MySQL中只有InnoDB
Spring MVC @Transactional注解方式事务失效的解决办法
前文提到,最新换了框架,新项目用SpringMVC + Spring JdbcTemplate。搭框架时,发现了一个事务无法正常回归的问题,记录如下: 首先展示问题: Spring applicationContext.xml配置: java:comp/env/jdbc/will txManager
事务注解Transactional在同一个类中调用的失效问题
问题:在Spring管理的项目中,方法A<em>使用</em>了Transactional注解,试图实现事务性。但当同一个class中的方法B调用方法A时,会发现方法A中的异常不再导致<em>回滚</em>,也即事务失效了。原因:Transactional是Spring提供的事务管理注解。<em>关于</em>事务的概念可参见转载的帖子:Spring事务管理(详解+实例)。重点在于,Spring采用动态代理(AOP)实现对bean的管理和切片,它为我...
spring 事务控制 设置手动回滚
1 //假设这是一个service类的片段 2 3 try{ 4 //出现异常 5 } catch (Exception e) { 6 e.printStackTrace(); 7 //设置手动<em>回滚</em> 8 TransactionAspectSupport.currentTransactionStatus()
springboot事务@Transactional加错地方导致异常不回滚
项目里面有个注册的方法,流程比较多,所以会用到事务,用的springboot,事务自动开启,然后在对应方法上面加上了 @Transactional(rollbackFor = Exception.class) 然后在里面有可能 出现异常的地方加上了 throw new Exception 正常来说这是没什么问题的,但我忽略了一个问题就是,这个类是继承了一个自定义接口的,虽然我为这个类加...
手动抛出异常让事务回滚要注意的地方
很久没写spring应用,再捡回来忘得差不多了,总是想着用throw new exception("...")来让事务<em>回滚</em>, 但实际测试并未如愿,虽然会触发异常但还是会更新数据库,花了半天时间未果,后来翻查以前写下的webapp,发现并不能用throw new exception来让事务<em>回滚</em>,事务<em>回滚</em>默认的exception是runtimeexception! ...
Mybatis 事物回滚最简单的操作方式
如果同一个方法需要同时进行两条sql的update 那么此时为了原子性,需要运用到事物。 @Transactional @ApiOperation(&quot;上移&quot;) @RequestMapping(value = &quot;/upExamLib&quot;, method = RequestMethod.PUT) public Result upExamLib(@Valid @Reques...
Transactional注解不回滚原因
1. 方法是不是public的。2. 你的异常类型是不是unchecked异常。如果我想check异常也想<em>回滚</em>怎么办,注解上面写明异常类型即可。@Transactional(rollbackFor=Exception.class)3. 数据库引擎要支持事务,如果是mysql,注意表要<em>使用</em>支持事务的引擎,比如innodb,如果是myisam,事务是不起作用的。4. 是否开启了对注解的解析&amp;lt;tx...
Spring事务超时、回滚的相关说明
事务超时: @Transactional(timeout = 60) 如果用这个注解描述一个方法的话,线程已经跑到方法里面,如果已经过去60秒了还没跑完这个方法并且线程在这个方法中的后面还有涉及到对数据库的增删改查操作时会报事务超时错误(会<em>回滚</em>)。如果已经过去60秒了还没跑完但是后面已经没有涉及到对数据库的增删改查操作,那么这时不会报事务超时错误(不会<em>回滚</em>)。 <em>回滚</em>: Spri
spring开发中如果service类里少了“@Transactional”,会造成dao类的数据库操作失败
在spring开发中,经常会在Controller中调用一个manager,或者称service,然后在这个service中调用dao完成数据库操作。但是如果这个service类中没有在开头设置“@Transactional”,是会造成dao中的数据库操作失败的,要注意!
Mysql 事务的提交和回滚
1 2
spring junit4 测试完毕后 事务自动回滚的解决方法
一直以为在类前面加   @TransactionConfiguration(transactionManager=&quot;transactionManager&quot;, defaultRollback=true) 就能让事务自动<em>回滚</em>,后来经过无数次的验证,我错了。 原因很简单,忘记重载   org.springframework.test.context.junit4.AbstractTransa...
Spring事务回滚条件
       在spring项目中,很多时候事务出现了异常,但是却没有<em>回滚</em>,导致数据库中产生脏数据。那位为什么明明出现了异常,事务却没有<em>回滚</em>呢,下面分析一下spring事务<em>回滚</em>的条件。        Spring事务<em>回滚</em>机制是这样的:当所拦截的方法有指定异常抛出,事务才会自动进行<em>回滚</em>!        1、拦截的方法:             事务的控制方式有三种:             ...
spring项目中添加@Transactional注解后出现NoSuchBeanDefinitionException异常的解决方法
配置文件里这一句&amp;lt;tx:annotation-driven transaction-manager=&quot;transactionManager&quot;/&amp;gt; 改成 &amp;lt;tx:annotation-driven transaction-manager=&quot;transactionManager&quot; proxy-target-class=&quot;true&quot;/&amp;gt;  proxy-target-class=&quot;...
Synchronized和@Transactional 使用时,同步失效。
Synchronized 的用法问题。 8月份在做一个系统的用户提现功能,为控制并发,想过在用Synchronized method(){}或者method(){ Synchronized(this){ } }来控制,两个同样的记录去做并发提现测试,同步方法或者<em>代码</em>块并没有起作用。Synchronized加在@Transactional事务注解的方法时,同步并不起作用,可以新建不带用事务注解的...
Oracle_BI解决方案使企业数据充分发挥作用技术白皮书下载
Oracle_BI解决方案使企业数据充分发挥作用技术白皮书 相关下载链接:[url=//download.csdn.net/download/sdav/2178500?utm_source=bbsseo]//download.csdn.net/download/sdav/2178500?utm_source=bbsseo[/url]
j s p 博客系统·····下载
jsp+mysql······································· 相关下载链接:[url=//download.csdn.net/download/messi456/2312129?utm_source=bbsseo]//download.csdn.net/download/messi456/2312129?utm_source=bbsseo[/url]
WINCE设备驱动程序开发下载
wince下设备驱动程序开发简述的很好是课件 相关下载链接:[url=//download.csdn.net/download/fewerhy/2388152?utm_source=bbsseo]//download.csdn.net/download/fewerhy/2388152?utm_source=bbsseo[/url]
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 如何在网页制作中加入视频 如何在网页制作中插入视频
我们是很有底线的