实践理解 Transactional 是否生效

2023-11-11

实践理解 Transactional 是否生效

示例:

新建一个订单表 tb_order_test 。

手动插入一条数据。

然后在代码中,根据 id 更新,如果更新成功,那么 update_time 会变化。

代码中执行 1/0; 由于 0不能做为除数,代码会抛异常。

通过 updateTime 观察事务是否提交/回滚。@Transactional 是否生效。

@Service
public class TransactionalDemo {

    @Resource
    private OrderService orderService;

//    @Transactional(rollbackFor = Exception.class)
    public void doA() {
        doB();
        //0不能做为除数,此处会抛异常
        int value = 1/0;
    }

    @Transactional(rollbackFor = Exception.class)
    public void doB() {
        Order order = new Order();
        order.setId(123L);
        order.setUpdateTime(new Date());
        //根据 id 更新,如果更新成功,那么 updateTime 会变化。
        orderService.updateById(order);

    }
    
}

A方法调用B方法,A没有@Transactional 注解,B有

执行A方法,抛异常后,update_time 已更新为最新时间,更新成功,说明事务没有回滚。@Transactional 不生效

@Transactional 底层是通过 AOP 动态代理实现的,如果在同一个类中调用,就不是通过代理类调用了,事务不会生效。

A方法调用B方法,A有@Transactional 注解,B也有

执行A方法,抛异常后,update_time 没有更新成功,说明事务回滚了。@Transactional 生效

A方法调用B方法,A有@Transactional 注解,B没有

执行A方法,抛异常后,update_time 没有更新成功,说明事务回滚了。@Transactional 生效

A方法调用B方法,A有@Transactional 注解,B没有。A方法 catch 异常

如果在 Service 服务层 catch异常,那么 @Transactional 会认为方法正常执行,没有异常,不会回滚。

@Transactional 不生效。

如果确认需要对 @Transactional 注解 的方法进行 catch,需要放到 Controller 层catch 异常。

参考资料:

Spring @Transactional 事务以及事务间调用完整解析,保你看完,反手就一个赞!_@transactional 内部调用_Mr_baci的博客-CSDN博客

https://www.cnblogs.com/ibcdwx/p/16643034.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实践理解 Transactional 是否生效 的相关文章

  • Glassfish:在部署期间修改 EAR 的部署描述符

    经过几天的搜索 尝试和摇头 我将这个问题发布到 SO 尽管它seems已经得到答复 这是场景 我有一个 EAR 应用程序 目前 包含一个 WAR 和一个 EJB 模块 EJB 模块使用 JPA persistence xml 并且一些无状态
  • 如何将抽象工厂与单例模式结合起来? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在用 java 编码 并且对这些模式很陌生 谁能给我一个也使用单例的工厂抽象的例子 这是一个实现类的示例单例模式 这个实现也是线程安全
  • MySQL 中如何使用继承?

    所以我正在读一本关于数据库设计原理的书 并读到了有关继承的章节 但我对如何在 MySQL 中将子类与其超类 连接 感到困惑 The table structure would for example look like this 那么我如何
  • Active MQ - HelloWorld 示例异常

    我正在尝试运行 hello world 示例在这里找到 http activemq apache org hello world html I added activemq all 5 5 1 jar已经到图书馆了 它构建成功 但出现以下警
  • Android 游戏偶尔出现延迟

    我正在用 Java 制作一个简单的 Android 游戏 我注意到每 20 40 秒就会出现一些烦人的延迟 首先 我认为它们是由垃圾收集器引起的 但当我检查 LogCat 时 我发现游戏滞后时没有垃圾收集 每当游戏开始滞后时 我都会标记日志
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • 无效的 PDO 查询不会返回错误

    下面的第二条 SQL 语句在 phpMyAdmin 中返回错误 SET num 2000040 INSERT INTO artikel artikel nr lieferant nr bezeichnung 1 bezeichnung 1
  • SwingWorker 在另一个 SwingWorker 的 did 方法中

    首先 我需要通知您 我正在尽最大努力学习如何用 Java 编写代码 虽然有点困难 但我相信我能做到 我过去提交了几个有关 SwingWorkers 等的问题 每一个我都以为我已经做到了 但后来发现我仍然需要学习 希望这一次不是那样的一次 话
  • org.apache.commons.codec.digest.Md5Crypt.md5Crypt 函数。 linux下出现异常,windows下正常

    我们正在使用commons codec加密密码 使用org apache commons codec digest Md5Crypt md5Crypt功能 在Windows环境下工作正常 但在CentOS上却抛出异常 我们有3台centOS
  • 计算行数并仅获取表中的最后一行

    我有一张桌子叫employeexam其结构和数据是这样的 id course id employee id degree date 1 1 3 8 2013 01 14 2 2 4 15 2013 01 14 3 2 4 17 2013 0
  • 无法自动装配 org.springframework.mail.javamail.JavaMailSender

    尝试运行我的应用程序时遇到以下问题 所有的东西都调试过了 还是一无所获 IDE 毫无问题地找到了 bean 所以我对这里发生的情况感到非常困惑 SEVERE Exception sending context initialized eve
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 使用 Box2d(适用于 Android)进行碰撞检测?

    有人可以解释一下使用 box2d for android 进行碰撞检测的工作原理吗 我无法理解 BBContactListener 以什么方式工作 BBContactListener listener new BBContactListen
  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • bufferedinputstream 中标记读取限制有什么用

    我是Java流的新手 我想读取特定的文件内容 然后需要从头开始读取 我创建了一个 BufferedInputStream 但我对 BufferedInputStream mark int markLimit 的文档感到困惑 文档说 publ
  • Java字符串查找和替换的最佳方法?

    我正在寻找 Java 中字符串查找和替换的最佳方法 这是一句话 我的名字叫米兰 人们都知道我叫米兰瓦西奇 我想用 Milan Vasic 替换 Milan 弦 但在我已经有 Milan Vasic 的地方 情况不应该是这样 搜索 替换后的结
  • 如何在速度模板中检索哈希图值

    如何从速度模板中的以下哈希图中检索值 请帮忙 LinkedHashMap
  • Spring Transactional 减慢了整个过程

    我正在尝试分析我有两堂课的情况 其中一个类是 ProcessImpl 它是起点并在内部调用其他子事务 我不知道出了什么问题 processImpl正在导入一些东西并将相关数据写入数据库 Specs Spring orm版本 3 2 18 发
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建
  • 构造函数参数和属性一起出现在 bean 定义中

随机推荐

  • Verilog入门精简教程

    Verilog入门 1 关键字 1 1 module module endmodule 代表一个模块 我们的代码写在这个两个关键字中间 1 2 input output input关键词 模块的输入信号 比如input Clk Clk是外面
  • 影响无线AP终端接入数量的几大因素

    人们常说无线AP这个东西最多也就带10 20人 用户再接入的话会造成整个AP下的用户上网效果很差 甚至经常出现接入受限制的提示 一个设备的硬件往往对接入人数的多少有着很大的关联 那么是不是无线设备厂商直接使用堆硬件的方法就可以实现高带机量呢
  • vue配置文件介绍

    1 vue config js 配置文件 https cli vuejs org zh config vue config js 2 README md 说明文件 3 package json 模块依赖 4 node modules 下载的
  • k8s工作负载型控制器

    k8s工作负载型控制器 文章目录 k8s工作负载型控制器 Deployment ReplicaSet ReplicaSet的工作原理 何时使用ReplicaSet DaemonSet 创建DaemonSet Daemon Pods是如何被调
  • ArcGIS 的基本使用

    在地理信息系统的相关开发过程中 采用一种好的方式去展现地图 以及在地图中融合各种各样的空间数据 是很重要的 ArcGIS 就是一个用于创建 管理 共享和分析空间数据的优秀平台 包含了各种地图服务组件 移动和桌面应用 以及开发者工具 这里记录
  • Ubuntu 16.04中error: No Fortran 77 compiler问题解决

    在安装mpich 3 2 1中遇到如下问题 解决方案 sudo apt get install g77 结果发现不行 如下图 另一种解决方案 安装gfortran sudo apt get install gfortran 问题解决 PS
  • 马上:Zxing、Zbar、HMS Scankit 扫码优化

    Zxing zxing 一款Java Android 很流行的二维码 条形码扫码库 开源 可移植 简单易用的api 相信大家对接触过zxing 库 在高端性能机器扫码效果还是很不错的 但面对复杂的扫码环境而言强光 弯曲 形变等情况 Zxin
  • nacos 系列学习(一、nacos服务安装)

    前几章写了使用Eureka作为服务注册 开始学习使用nacos 1 下载 下载地址 https github com alibaba nacos releases tag 1 3 1 选择这个zip下载 下载完毕后我们可以看看目录结构 修改
  • Python读取excel表格数据并绘制成柱状图

    Python的功能十分强大 它不仅可以用来做爬虫 还可以用来做数据分析哦 那么今天我就带着大家用Python 分析表格数据 并绘制成柱状图 让大家感受一下用python来绘制图表是一种什么感觉 这是我们今天要分析的表格数据 表格名称为tes
  • API需要同时维护多个版本。如何优雅的设计?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在项目中经常遇到 相同的数据 对不同的客户以及不同的终端 需要输出不同的数据 更有特殊的情况 需要对一个数据 在不同的终端表示形式不一样 综合多种考虑 需要一种支持扩展 并
  • C语言抽签(抽奖)小程序

    include
  • Caffe中Layer注册机制

    Caffe内部维护一个注册表用于查找特定Layer对应的工厂函数 Layer Factory的设计用到了设计模式里的工厂模式 Caffe的Layer注册表是一组键值对 key value LayerRegistry里用map数据结构维护一个
  • elementUI项目打包后样式错乱问题解决

    gt npm run dev 时样式完全没有问题 run build之后打包上传服务器之后样式乱了 一脸懵逼 1 检查样式发现重置element的样式没有生效 但是检查main js里面的样式引入顺序没有问题啊 2 尝试将css引入放入ap
  • Unity 宏定义

    一些自带的宏定义 UNITY EDITOR 编辑器调用 UNITY STANDALONE OSX 专门为Mac OS 包括Universal PPC和Intelarchitectures 平台的定义 UNITY DASHBOARD WIDG
  • Markdown、Word中插入公式及序号,并设置公式居中序号右对齐

    Markdown里实现这个功能非常简单 只需要在公式最后插入 tag index 即可 其中index为公式编号 如 S x
  • DNN框架中的NCHW与NHWC数据格式

    流行的深度学习框架中有不同的数据格式 典型的有NCHW和NHWC格式 下面从逻辑表达和物理存储角度用图的方式来理解这两种数据格式 最后以RGB图像为例来加深NHWC和NCHW数据存储格式的理解 Intel R MKL DNN Underst
  • 华为智慧搜索,下一片流量蓝海的“入海口”

    几年前开始 TMT业界就发出了一类质疑的声音 移动互联网的各个APP彼此割裂 是在 孤岛炼油 大量的应用程序和服务互不打通 形成了严重的数据孤岛 用户只能进行站内搜索 很难穿透APP壁垒 进行全局搜索 淮南子 氾论训 中写道 百川异源而皆归
  • Redis笔记&常用指令合集

    1 简介 NoSQL NoSQL Not Only SQL 意即 不仅仅是SQL 泛指非关系型的数据库 NoSQL不依赖业务逻辑方式存储 而以简单的key value模式存储 因此大大的增加了数据库的扩展能力 NoSQL特性 不遵循sql标
  • 关于目前自己iOS项目使用的第三方开源库

    1 AFNetworking 目前比较推荐的iOS网络请求组件 默认网络请求是异步 通过block回调的方式对返回数据进行处理 2 FMDB 对sqlite数据库操作进行了封装 demo也比较简单 3 MBProgressHUD 也是iOS
  • 实践理解 Transactional 是否生效

    实践理解 Transactional 是否生效 示例 新建一个订单表 tb order test 手动插入一条数据 然后在代码中 根据 id 更新 如果更新成功 那么 update time 会变化 代码中执行 1 0 由于 0不能做为除数