Spring 事务传播行为之Propagation.NESTED REQUIRES_NEW等探讨

        当一个事务方法(标记为@Transactional(propagation = Propagation.NESTED))被另一个活动事务调用时,它会创建一个“保存点”(Savepoint)作为新的事务开始点。这意味着,如果这个嵌套事务方法内部发生异常并导致回滚,事务会回滚到这个保存点,而不会影响到外部事务的其他操作。如果一切正常,嵌套事务会在外部事务结束时一起提交。

标记为@Transactional(propagation = Propagation.REQUIRES_NEW

和Propagation.NESTED 接近但是NESTED不是所有数据库都支持mybatis就不支持

示例:        

@Service
public class UserService {@Transactional(propagation = Propagation.REQUIRES_NEW)public void createUserAndSendWelcomeEmail(User user) {userDao.createUser(user);emailService.sendWelcomeEmail(user.getEmail()); // 假设这里可能抛出异常}
}@Service
public class EmailService {@Transactional(propagation = Propagation.NESTED)public void sendWelcomeEmail(String email) {// 发送邮件逻辑// 如果发送邮件失败,此方法的事务会回滚到保存点,不影响createUser操作}
}

其实我感觉这样子,其实可以在ctrl层写,直接在一个ctrl层调用2个service 

而当@transation 事务 调用存储过程里面也有事务,怎么独立这两个事务?

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void callIndependentProcedure() {// 调用包含事务处理的存储过程
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;@Service
public class YourService {@Autowiredprivate YourMapper yourMapper;@Transactional(propagation = Propagation.REQUIRES_NEW)public void callProcedureInNewTransaction() {try {// 调用Mapper方法,该方法内部会调用包含事务的存储过程callIndependentProcedure();} catch (Exception e) {// 异常处理// 这里可以根据需要决定是否抛出异常,以决定事务是否回滚throw new ServiceException("Error while calling procedure", e);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入探讨:Spring与MyBatis中的连接池与缓存机制

深入探讨:Spring与MyBatis中的连接池与缓存机制 引言 在现代应用程序开发中,性能优化是一个永恒的话题。而在企业级Java应用开发中,Spring和MyBatis是两种非常流行的框架,它们的连接池和缓存机制对应用程序的性能有着至关重要的…

Vue55-TodoList案例-本地存储

一、TodoList案例-本地存储 此时,修改对象里面的属性,watch监视不到! 需要深度监视,就不能用简写形式! 二、jeecg-boot中的本地存储 jeecg-boot中,浏览器的本地存储,存储的是token!…

kali - 配置静态网络地址 + ssh 远程连接

文章目录 观前提示:本环境在 root 用户下kali 配置静态网络地址打开网络配置文件 kali 配置 ssh 远程连接 观前提示:本环境在 root 用户下 kali 配置静态网络地址 打开网络配置文件 vim /etc/network/interfaces出现一下内容 # This file describes …

Parallels Desktop 19 for mac破解版安装激活使用指南

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机,并于其中装设不同的操作系统,如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时,您可在 …

git 如何撤销已经 push 的 merge

今天在合并代码时, 发现自己失误把另外一个分支 B 的代码合并到了自己分支 C, 于是想到要撤销这次 merge 一般地, 如果我们想要撤销某次 commit 可以 git revert <commit-id>. 然而, 对于 merge 类型的 commit 不能直接 git revert <commit-id> 这里举个例子: 我…

最新编程语言排行榜,C++ 和 Go 成为新王?!

大家好&#xff0c; 我是不爱敲代码吖,2024 年 6 月最新的 TIOBE 编程语言排行榜已经发布&#xff0c;如图&#xff1a; 注意&#xff0c;TIOBE 编程语言排行榜是基于 全球 工程师的数量、课程、热门网站、第三方供应商综合计算出来的&#xff0c;只是一个编程语言流行度和趋势…

MBTI:探索你的性格类型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

网络知识:这些特殊的IP地址,具体的用途你都知道吗

目录 一、0.0.0.0 二、255.255.255.255 限制广播地址 三、127.0.0.1 本机地址 四、224.0.0.1 组播地址 五、169.254.x.x 六、10.x.x.x、172.16。x。x&#xff5e;172.31。x。x、192.168。x。x 私有地址 对于计算机网络来说&#xff0c;IP地址是非常重要的概念&#xff0c…

Content Provider是什么?

一、技术难点 Content Provider是Android系统中一个重要的组件&#xff0c;它主要用于在不同的应用程序之间实现数据共享的功能。技术难点主要体现在以下几个方面&#xff1a; 数据安全性&#xff1a;Content Provider提供了一套完整的机制&#xff0c;允许一个应用程序访问另…

夯实网络底座:智能云解析助推新基建发展再上新台阶

在数字化浪潮汹涌澎湃的今天&#xff0c;互联网已成为社会运转不可或缺的基础设施。而在这背后&#xff0c;DNS&#xff08;域名系统&#xff09;作为互联网的底座&#xff0c;其重要性不言而喻。随着云计算、大数据、人工智能、IPv6等新基建的迅猛发展&#xff0c;传统的DNS服…

胡说八道(24.6.10)——数电与STM32

至此&#xff0c;信号与系统的简单笔记已经全部都写完了。其实&#xff0c;信号与系统的知识远远不只这些&#xff0c;总之&#xff0c;我的老师没讲完。其真实的原因是不在考试大纲里面。今天&#xff0c;看到一个短视频——学习的意义。其中有句话说&#xff0c;“因为考试不…

IEEE802.11a中的同步

目录 1.前言2.IEEE802.11a中的同步3.分组检测4.分组检测常用算法 微信公众号获取更多FPGA相关源码&#xff1a; 1.前言 最近有其他很多事情要做&#xff0c;接收机这部分本身内容也更难&#xff0c;涉及很多理论知识&#xff0c;本来之前对于随机信号和假设检验就没怎么学习透…

ETL可视化工具 DataX -- 安装部署 ( 二)

引言 DataX 系列文章&#xff1a; ETL可视化工具 DataX – 简介 ( 一) DataX 私有仓库 &#xff1a; https://gitee.com/dazhong000/datax.git https://gitee.com/dazhong000/datax-web.git 本地地址&#xff1a;E:\soft\2023-08-datax 2.1 DataX安装 安装文档 git地址&a…

请详细列出获取商品详情接口的实现过程,包括从请求处理、数据接收、结果返回等各个环节的详细步骤。

当实现一个获取商品详情接口时&#xff0c;通常可以遵循以下详细步骤来确保接口的稳定性、可维护性和性能。 1. 需求分析 明确接口功能&#xff1a;确定API接口需要返回哪些商品详情信息&#xff0c;如商品名称、价格、库存、描述、图片链接等。接口调用者&#xff1a;确定哪些…

100V宽电压H62410A恒压芯片 24V降压5V 24V降压12V电源IC

H62410A是一款宽电压100V 内置MOS管的降压恒压芯片&#xff0c;适用于24V降压至5V或12V的应用场景。其内置100V耐压MOS和宽压8V-90V的输入范围&#xff0c;使得它能够在多种电压条件下稳定工作。同时&#xff0c;支持输出电压可调至3.3V&#xff0c;为不同设备提供了灵活的电源…

centos7.9部署k8s的几种方式

文章目录 一、常见的k8s部署方式1、使用kubeadm工具部署2、基于二进制文件的部署方式3、云服务提供商的托管 Kubernetes 服务4、使用容器镜像部署或自动化部署工具 二、使用kubeadm工具部署1、硬件准备&#xff08;虚拟主机&#xff09;2、环境准备2.1、所有机器关闭防火墙2.2、…

好专业还是好学校?

2024高考刚刚落下帷幕&#xff0c;有人金榜题名考上自己理想的学校&#xff0c;有人发挥失常在学校与专业之间犹豫不决&#xff0c;大多数人也许倾向于后者&#xff0c;到底是选择一个普通学校的好专业&#xff0c;还是选择一个好学校的普通专业&#xff0c;我认为应该根据自己…

Vue49-props属性

一、当同一个组件标签被使用多次 因为data属性写的是函数形式&#xff01; 二、需求&#xff1a;老王也想用<Student>组件&#xff0c;但是需要动态把老王想要的值传进来。 2-1、使用props属性接收参数 使用props属性&#xff0c;接收的这三个参数&#xff0c;是被保存在…

软件概要设计书(Word原件项目直接套用)

1引言 1.1编写目的 1.2项目背景 1.3参考资料 2系统总体设计 2.1整体架构 2.2整体功能架构 2.3整体技术架构 2.4运行环境设计 2.5设计目标 3系统功能模块设计 3.1个人办公 4性能设计 4.1响应时间 4.2并发用户数 5接口设计 5.1接口设计原则 5.2接口实现方式 6运行设计 6.1运行模块…

JetLinks开源物联网平台社区版部署教程

1.上github搜素jetlinks 2.找到源代码,并且下载到本地。 3.项目下载完成之后,还需要另外下载三个核心依赖模块。在github找到jetlinks。 4.点击进去下载,下载完成之后,你会发现里面有三个文件夹是空白的,先不用理会,把它复制到jetlinks-commnity目录下,并且在pom.xml添加…