声明式事务的事务回滚

Spring事务管理A方法内部调用B方法的回滚问题测试代码 立即下载

写在前面:一篇用户防止自己再次忘记的博客

service层的方法加上注解

@Transactional(rollbackFor = Exception.class)

结论:service层加了声明式事务不要捕获异常,否则不回滚,要抛出去,让sping知道你发生了异常,然后执行回滚操作

------------------------20191211补充一下--------------------

现象:

     1、ServiceA类为Web层的Action服务

     2、Action调用了ServiceA的方法A,而方法A没有声明事务(原因是方法A本身比较耗时而又不需要事务)

     3、ServiceA的方法A调用了自己的方法B,而方法B声明了事务,但是方法B的事务声明在这种情况失效了。

     4、如果在方法A上也声明事务,则在Action调用方法A时,事务生效,而方法B则自动参与了这个事务。 

原因:

表面上是事务声明失效的问题,实质上很可能是Spring的AOP机制实现角度的问题

 

再推荐一篇博客:https://www.cnblogs.com/softidea/p/5962597.html

 

参考:https://my.oschina.net/u/2401092/blog/1863563

信息抽取实战:三元组抽取(限定领域 vs 开放领域)(附代码) 信息抽取实战:三元组抽取 目录信息抽取实战:三元组抽取一、限定领域的三元组抽取比赛介绍数据分析序列标注模型关系分类模型三元组提取总结开放领域的三元组抽取标注平台文本分类新数据进行三元组抽取总结参考文献 一、限定领域的三元组抽取   本项目将会介绍在2019语言与智能技术竞赛的三元组抽取比赛方面的一次尝试。由于该比赛早已结束,当时也没有参加这个比赛,因此没有测评成绩,我们也只能拿到训练集和验证集。但是,这并不耽误我们在这方面做实验。 比赛介绍   该比赛的网址为:http://lic2019.ccf.org. 阅读详情

相关推荐

机器学习笔记之玻尔兹曼机(一)基本介绍

在受限玻尔兹曼机——模型表示(Representation)一节中以玻尔兹曼机为引,介绍了受限玻尔兹曼机。从本节开始,将正式介绍玻尔兹曼机。相比于它的表示和推断过程,我们更关注它在求解过程中出现的问题。

静静的学习就好 7924

Spring事务管理A方法内部调用B方法的回滚问题(springboot事务管理)

springboot事务管理 写在前面 之前遇到一些自以为是的面试官问了一大推关于A方法内部调用B方法的事务问题,换着法的问,AB方法分别设置不同的事务传播属性时,如果AB方法中某个方法出错了,AB方法数据会怎样回滚的问题? 首先这种问题很不负责任,前提条件不是很清晰,问题没说清楚,容易成了绕口令游戏: 1、A和B方法有没有对异常进行try catch ? 2、AB方法可设置的事务传播属性组合那么多,怎么能口头上给你一一列举? 3、报错的位置是把数据库操作方法之前还是之后? 4、AB方法是否是来自同一个类

ZHONGZEWEI的博客 1万+

告别仿真报错!手把手教你为Intel MAX10 FPGA定制IBIS模型(附Allegro Skill工具)

本文详细介绍了为Intel MAX10 FPGA定制IBIS模型的完整流程,解决信号完整性仿真中的管脚映射问题。通过Allegro Skill工具自动化处理管脚信息,优化IBIS模型关键段落,提升仿真效率和精度,适用于高速数字电路设计。

weixin_33217202的博客 325

【Spring学习34】Spring事务(4):事务属性之7种传播行为

事务传播行为什么叫事务传播行为?听起来挺高端的,其实很简单。 即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。 例如:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个

程序老兵的博客 1万+

一文学会Cadence Sigrity PDN仿真——硬件新手小白都能看懂的保姆级教程

电源完整性的仿真,实际上是在仿真以及优化系统中的等效串联电阻。知道了仿真以及优化的目标之后,接下来就是要弄明白这个串联电阻从哪儿来以及怎么优化。整个系统中的串联电阻实际上由三部分组成:没有相位的阻抗,有相位的容抗和感抗,得益于相位,在某个特定的频点,容抗和感抗会大小相等,相位相反而相互抵消,这时候整个系统中就剩下了阻抗,所以整个系统的串联电阻达到了一个最低值,这种现象就是----谐振。当系统处于谐振点时候,整个系统会有一个最小的串联电阻,所以第一个优化电阻的手段就是让谐振来的更频繁一点。

学习帮的博客 2万+

Sublime Text4代码配色自定义方案

关于Sublime Text对于我的使用体验,只能说内置的代码主题真的都太low了,一点都不好看。所以接下来我分享一下我自定义代码配色。当然,大家也可以通过我给的中文翻译注释来自定义自己喜欢的颜色。废话不多说,直接上代码直接将代码复制粘贴到:Preferences > Customize Color Scheme 即可。},"globals":"foreground": "var(white)", // 前景色。

追求细节,成就完美 6027

A调用B方法,@Transactional事务问题几种场景

Transactional事务问题几种场景

星威四海的博客 2591

服务器报错:“Unhealthy status reported by this UEFI driver without specific error message”.. 记录解决过程

服务器开机报错:Unhealthy status reported by this UEFI driver without specific...

ayychiguoguo的博客 4399

事物的传递回滚

遇到一个事物传递的问题,A方法调用B 方法,当b发生异常时,A不回滚 解决方案: A: A方法正常事物 在 B方法上加注解     @Transactional(propagation = Propagation.NESTED) ...

不二有恒 的博客 469

YOLOv8改进策略【损失函数篇】| 替换Powerful-IoU(PIoU),增强对中等质量锚框的关注力,引导锚框更直接、高效地回归

现有基于IoU的损失函数存在不合理的惩罚因子,导致锚框在回归过程中出现面积扩大的问题,使得回归效率降低、收敛速度变慢。同时,这些损失函数在反映锚框与目标框之间的差异、考虑目标框大小以及某些情况下的性能表现等方面存在局限性。在目标检测任务中,边界框回归的损失函数对检测性能至关重要。Powerful-IoU(PIoU)及其升级版PIoU v2正是为解决现有损失函数存在的问题而设计的。本文利用PIoU改进YOLOv8的损失函数,提高模型精度。

Limiiiing的博客 673

汇川H5U PLC 实现直线插补、圆弧插补、直线圆弧混合连续插补

使用汇川H5UPLC实现直线插补,圆弧插补,直线圆弧混合路径插补,通过示教可以走出复杂的路径,仅供参考学习。

weixin_39832501的博客 4788

Spring声明式事务配置问题以及事务不回滚问题

一、声明式事务配置问题 1、在数据源文件(applicationContext-datasource.xml)中配置 <!-- 事物管理 --> <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <pr...

1424

STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度

详细介绍了STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度。

kevin1499的博客 5594

spring声明式事务回滚

spring 声明式事务 spring声明式事务管理是通过aop实现的,使用时不用修改原有业务代码,只需要通过简单配置追加事务控制功能,同时也最符合非侵入式的理念,因此大多数用户都会选择声明式事务。 默认Spring事务只在发生未被捕获的RuntimeException时才回滚,而发生检查异常是不会回滚的, checked Exception回滚 1、注解方式 @Transactio...

weixin_30740295的博客 215

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

声明式事务--加try catch后要注意手动回滚--非注解

项目在 E:\学习文档子目录压缩\数据库\事务\事务--非分布式事务\声明式事务--加try catch后要注意手动回滚\声明式事务--加try catch后要注意手动回滚--非注解\AU.rar 或 我的网盘\我的笔记\学习文档子目录压缩\数据库\事务\事务--非分布式事务\声明式事务--加try catch后要注意手动回滚\声明式事务--加try catch后要注意手动回滚--非注解\AU...

香帅的博客 2953

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

声明式事务不回滚@Transactional的避坑正确使用

在我们开发中很多时候都要用到事务,例如转账等等的操作,这些我就不多BB了,哈哈。 下面我来说下关于Spring的声明式事务@Transaction的坑,我想最大的坑应该还是代理事务不生效的问题,下面放个链接,以免别人问。链接 下面我要说的又是一个坑,也是声明式事务不回滚的问题。重点来了 来了。。。。 @Transactional(rollbackFor = Exception.class) //一定要加 rollbackFor = Exception.class 参数,下面会说明原因: //一定要加 ro

qq_42261668的博客 659

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Spring声明式事务不回滚的问题

疑问,确实像往常一样在service上添加了注解@Transactional,为什么查询数据库时还是发现有数据不一致的情况,想想肯定是事务没起作用,出现异常的时候数据没有回滚。于是就对相关代码进行了一番测试,结果发现一下踩进了两个坑,确实是事务未回滚导致的数据不一致。 下面总结一下经验教训: Spring事务的管理操作方法 编程式的事务管理 实际应用中很少使用 通过使用Transact...

study_forever_my的博客 323

Spring声明式事务手动回滚方案

Spring的事务一般分为声明式事务(或叫注解式事务)和编程式事务,编程式事务比较灵活,可以将事务的粒度控制的更细,并且可以控制何时提交,哪种情况回滚。而声明式事务使用@Transactional注解,使用起来没有那么灵活,但是对业务代码没有入侵,而且本身支持一些异常情况下的回滚。但是这个异常是不可以捕获的,如果代码里捕获了,那么事务中已经执行了的部分会提交。代码如下: @Transacti

thekenofDIS的专栏 7036

Spring声明式事务 回滚

Spring中的@Transactional(rollbackFor = Exception.class)属性详解 原文链接 我们都知道Exception分为运行时异常RuntimeException和非运行时异常。error是一定会回滚的。 如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。 如果不想终止,则必须捕获所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理

zxjdC的博客 399

spring声明式事务,finally 中return对事务回滚的影响

Why?为什么事务没有一起回滚!上面的update逻辑执行成功了,下面的insert逻辑却没有插入数据库!

u010738038的专栏 539

Spring 2.0声明式事务管理让你的事务轻松回滚!

 请看下面的接口和它的实现。这个例子的意图是介绍概念,使用 Foo 和 Bar 这样的名字只是为了让你关注于事务的用法,而不是领域模型。                 我们想做成事务性的服务接口 -->            package x.y.service;public interface FooService ...{    Foo getFoo(String fooName)

上善若水.class 2534

Spring AOP声明式事务异常回滚

Spring AOP声明式事务异常回滚

10年职场两茫茫,35岁凄凉奈若何 120

完美解决Spring声明式事务不回滚的问题

编程式的事务管理 实际应用中很少使用 通过使用TransactionTemplate 手动管理事务 声明式的事务管理 开发中推荐使用(代码侵入最少) Spring的声明式事务是通过AOP实现的 主要掌握声明式的事务管理。 spring事务不回滚的两个原因 总结一下导致事务不回滚的两个原因,一是Service类内部方法调用,二是try...catch异常。 1. Service类内...

xjk201的博客 1047

sprinboot中编程式事务_Spring声明式事务为何不回滚

疑问,确实像往常一样在service上添加了注解 @Transactional,为什么查询数据库时还是发现有数据不一致的情况,想想肯定是事务没起作用,出现异常的时候数据没有回滚。于是就对相关代码进行了一番测试,结果发现一下踩进了两个坑,确实是事务未回滚导致的数据不一致。下面总结一下经验教训:Spring事务的管理操作方法下面先总结一下Spring的事务管理方式,spring支持两种事务管理的操作方...

weixin_39956353的博客 240

Spring Framework事务管理:声明式事务回滚机制详解

在企业级Java应用开发中,事务管理是确保数据一致性和完整性的核心技术。你是否曾遇到过这样的场景: - 用户下单后库存扣减成功,但订单创建失败,导致数据不一致 - 批量数据处理时部分操作失败,需要整体回滚 - 复杂的业务逻辑中,不同异常需要不同的回滚策略 Spring Framework的声明式事务管理通过优雅的`@Transactional`注解,为开发者提供了强大而灵活的事务控制能力。本文...

gitblog_00541的博客 382

Spring声明式事务为何不回滚

Spring声明式事务为何不回滚 rabbitGYK 2016.12.29 22:35* 字数 1670 阅读 7310评论 35喜欢 151 博客原文 疑问,确实像往常一样在service上添加了注解 @Transactional,为什么查询数据库时还是发现有数据不一致的情况,想想肯定是事务没起作用,出现异常的时候数据没有回滚。于是就...

weixin_30740295的博客 86
上一篇: redis哨兵
下一篇: MyBatis Generator 逆向工程根据表字段注释生成实体类属性注释、序列化、toString
Yuwen_forJava
博客等级 码龄9年 28粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值