Spring 事务隔离级别和传播行为

Anaconda安装教程傻瓜教程 网上好多教程找的我心好累,为了方便新手安装,我这边整理了大致详细的教程,参考了好几个大佬的教程,废话不多说,直接开始~ **前言:**有人纠结先安装python还是安装anaconda,这边的建议是装anaconda,就不需要单独装python了。 其次,有小伙伴的Anaconda的安装分两种情况: 情况一:电脑现在没有装python或者现在装的可以卸载掉(装Anaconda时先卸python); 情况二:电脑目前装了python,但想保留它; 阅读详情

事务的隔离级别

名词的含义

名词含义原因
脏读一个事务读取了另一个事务还没有提交的数据一个事务对某数据进行更新,但并未提交,另一事务读取到了该数据,但是前一个事务如果回滚,那么后一个事务就读取到了错误数据
不可重复读一个事务多次读取同一个数据,结果不同一个事务在2次读取某数据之间时,另一个事务对数据进行了更新,导致前一个事务前后读取数据不一致
幻读一个事务多次查询符合某一条件的数据,结果不同一个事务在2次查询某一条件的数据之间时,另一个事务插入了一条符合该条件的数据,导致前一个事务前后查询数据不一致

隔离级别

隔离级别含义描述
SERIALIZABLE串行化事务串行执行,消耗最大
REPEATABLE READ可重复读避免不可重复读,但是会出现幻读
READ_COMMITTED读已提交避免脏读,但是会出现不可重复读和幻读
READ_UNCOMMITTED读未提交会出现脏读,不可重复读和幻读
DEFAULT默认使用数据库默认的事务隔离级别

事务的传播行为

传播行为描述
PROPAGATION_REQUIRED如果上下文已存在事务, 就加入该事务; 否则新建事务
PROPAGATION_SUPPORTS如果上下文已存在事务, 就加入该事务; 否则以非事务方式执行
PROPAGATION_NOT_SUPPORTED如果上下文已存在事务, 就挂起该事务, 以非事务方式执行完, 再恢复上下文事务; 否则直接以非事务方式执行
PROPAGATION_MANDATORY如果上下文已存在事务, 就加入该事务; 否则抛异常
PROPAGATION_NEVER如果上下文已存在事务; 就抛异常; 否则以非事务方式执行
PROPAGATION_REQUIRES_NEW如果上下文已存在事务, 就将上下文事务挂起,然后新建事务,直到新事务执行完,再恢复上下文事务; 否则新建事务
PROPAGATION_NESTED如果上下文已存在事务,就嵌套事务; 否则新建事务

嵌套事务

嵌套事务是子事务套在父事务中执行, 子事务是父事务的一部分. 在进入子事务之前, 父事务会建立一个回滚点.

如果子事务回滚, 父事务会回滚到进入子事务之前建立的回滚点

如果父事务回滚, 子事务也会跟着回滚. 因为父事务结束之前, 子事务不会提交.

提交事务时, 子事务先提交,然后父事务在提交

事务的使用

  1. Spring 注入PlatformTransactionManager的某一个具体实现类JtaTransactionManager 或 DataSourceTransactionManager 等
  2. 使用@Transactional标注在某一方法上
  3. 或者使用TransactionTemplate 来进行细粒度化的操作
  4. Spring 中事务默认回滚RuntimeException和Error的异常
    TransactionAspectSupport#invokeWithinTransaction() ->
    TransactionAspectSupport#completeTransactionAfterThrowing() ->
    DefaultTransactionAttribute#rollbackOn()

注意

在 Spring 中, 同一个类中的方法, 一个方法直接调用另一个方法, 第二个方法上的@Transactional是无效的
例如 :

@Service
public class MyServiceImpl implements MyService {
    public void test1() {
        test2();
    }

    @Transactional
    public void test2() {
    }
}
@RestController
public class MyController {
    @Autowired
    MyService myService;
    @GetMapping("/test1")
    public Object test1(){
        myService.test1();
        return "ok";
    }
    @GetMapping("/test2")
    public Object test2(){
        myService.test2();
        return "ok";
    }
}

在MyController#test1() 中, 通过myService.test1() 间接调用myService#test2(), @Transactional是不生效的
在MyController#test2() 中, 直接调用myService#test2(),@Transactional生效
另外传播行为和隔离级别也是一样, 因为它们的前提是@Transactional 生效

UE5在Ubuntu22.04.4下的高效开发环境配置指南 本文详细介绍了在Ubuntu 22.04.4系统上配置UE5高效开发环境的完整指南,包括系统准备、显卡驱动安装、UE5引擎编译与配置、开发工具链设置以及性能优化技巧。通过逐步指导,帮助开发者快速搭建稳定的UE5开发环境,解决常见问题,提升开发效率。 阅读详情

相关推荐

保姆级教程:在RK3568开发板上手把手配置RMII百兆以太网DTS节点

本文提供了一份详细的RK3568开发板RMII百兆以太网DTS节点配置教程,涵盖基础概念解析、关键参数设置、实际操作步骤及常见问题排查。通过手把手指导,帮助开发者快速完成RK3568开发板的以太网配置,特别适合嵌入式系统开发者参考。

weixin_33686714的博客 137

Spring 事务传播行为

Spring 事务传播行为 前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他 不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便 利。但是人们对他的误解也颇多,你一定也听过“service方法事务最好不要嵌套”的传言。要想正确的使用工具首先需要了解工具。本 文对七种事务传播行为做详细介绍,内容主要代码示例的方式呈现。 什么是事务传播行

qq_41884972的博客 164

深入分析RAG知识库多模态数据预处理

多模态企业数据预处理是构建高质量RAG知识库的关键环节。本文详解了处理流程:1)文档格式识别与路由;2)多模态内容提取(文本、图像、音视频);3)结构解析与语义重建;4)数据清洗与增强;5)智能分块(强调语义完整性);6)元数据注入。推荐使用开源工具如PaddleOCR、Whisper、BLIP-2等,或商业API处理复杂场景,最终生成带丰富元数据的结构化内容,为后续向量化检索奠定基础。

qq_35354529的博客 1379

事务-1 事务隔离级别和Spring事务传播机制

本文介绍事务的基础篇:包括事务的概念和性质、MySql的隔离级别、Spring事务传播机制等,本文偏向于实践操作。

shengyu 5474

Unity游戏开发实战:用Flow Field实现RTS百人军团流畅寻路(附完整代码)

本文深入探讨了在Unity中利用流场寻路技术解决RTS游戏大规模单位移动性能瓶颈的实战方案。通过解析从Dijkstra算法生成成本场、积分场到最终向量场的核心原理,并结合分块、缓存及与DOTS/ECS架构集成的优化策略,实现了百人军团的流畅群体寻路。文章提供了完整的代码示例,助力开发者构建高性能的RTS寻路系统。

weixin_28363123的博客 587

OAI骨关节炎数据集申请与DICOM下载全流程避坑指南

医学影像分析中,DICOM格式是存储与交换CT、MRI等数据的通用标准,其元数据Tag承载着像素间距、层厚等关键物理信息,直接影响定量分析的准确性。在骨关节炎研究领域,OAI数据集因样本量大、随访时间长而成为高价值资源,但获取需通过NDA协议申请,并借助nda-tools命令行工具完成TB级影像的批量下载与断点续传。这一流程涉及浏览器环境配置、DICOM格式转换及Python预处理等工程环节,任一细节疏漏都可能导致数据读取异常或分析偏差。掌握从申请到落地的完整链路,能显著提升医学影像AI研究的效率与可复现性

weixin_30843121的博客 276

Spring中事务的隔离级别和传播机制

@Transactional详解之事务隔离级别及事务传播机制

关关的博客 2598

解决Windows无法卸载补丁的实用方法

无法卸载Windows补丁可能是一个棘手的问题,但通过上述方法,你应该能够找到解决方案。无论是通过控制面板、命令提示符还是手动重置Windows更新组件,都有可能成功卸载问题补丁。如果所有方法都无效,系统还原将是一个值得尝试的备选方案。希望这篇文章能帮助你解决无法卸载补丁的问题。

mmoo_python的博客 1万+

一看就理解_Spring事务的7种传播行为

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

wushijuewu 1156

手把手教你学Simulink--基于飞行控制与稳定性的场景实例:固定翼无人机的自动起飞与降落控制

本文介绍了使用Simulink对固定翼无人机自动起飞与降落控制系统进行建模与仿真的完整流程。首先构建了包含飞行器动力学模型、控制系统、环境模拟等模块的系统结构,详细阐述了简化动力学方程的推导和实现。重点讲解了PID控制器设计,包括起飞阶段的速度控制和降落阶段的高度控制策略。通过添加环境干扰和输入信号,建立了完整的仿真模型,并利用输出显示模块评估系统性能。该实例为无人机自主控制系统的开发提供了有效的仿真验证方法,有助于优化参数提高飞行稳定性。

MHD0815的博客 4311

rk3399开发环境的介绍

由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluez做一个系统性的介绍,尽可能的涵盖所有内容。

朝气蓬勃 711

事务的四种隔离级别和七种传播行为

事务(TRANSACTION) 是作为单个逻辑工作单元执行的一系列操作。多个操作作为一个整体向系统提交,要么都执行,要么都不执行。事务是一个不可分割的逻辑单元。脏读:简单来说,就是一个事务读取到了另一个事务未提交的数据。不可重复读:就是说,比如在A事务中进行多次相同的查询,B事务在A事务多次查询之间修改对应表中的数据,导致A事务多次读取的结果不一致。

aoteman_6的博客 226

VS code 调试显示preLaunchTask“g++“已终止,退出代码为-1。 生成‘... .exe‘文件错误

总结: 以后每个工程都需要按照这样的流程:创建一个.c/.cpp文件 -> F5运行 -> 配置tasks.json文件-> launch.json文件 -> 运行

qq_45151652的博客 2516

spring 事务传播行为和事务隔离级别

1、Spring声明式事务 声明式事务(declarative transaction management)是Spring提供的对程序事务管理的方式之一。 Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中申明。用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。这样的好处是,事务管理不侵入开发的组件,具体来说,业务逻辑

小鱼的专栏 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

事务隔离级别和传播行为_Spring事务的传播行为和隔离级别

1.事务的传播行为 事务的使用过程中,用的最多的传播行为是require,在大部分的mis系统里,可以对整个业务层切一个require的事务就可以满足需要。 但spring提供的不仅如此,对于复杂的业务,Spring也提供了相应的事务传播行为来满足业务需要。 Spring中的传1.事务的传播行为事务的使用过程中,用的最多的传播行为是require,在大部分的mis系统里,可以对整个业务层切一个re...

weixin_39604685的博客 4307

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring 事务的隔离级别和传播行为

一、简述事务是恢复和并发控制的基本单位。 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如 SQL、C++ 或 Java)书写的用户程序的执行所引起,并用形如 begin transaction 和 end transaction 语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。例如:在关系数据库中,一个事务可以是一条 S

ChineseSoftware的博客 637

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Spring五个事务隔离级别和七个事务传播行为

事务隔离级别 隔离级别 1 DEFAULT 使用底层数据库的默认隔离级别,大部分数据库,默认隔离级别都是READ_COMMITED 2 READ_UNCOMMITED 允许事务读取未被其他事务提交的更改。脏读,不可重复读,幻读都可能会出现. 3 READ_COMMITED 只允许事务读取已经被其他事务提交的更改,可以避免脏读,但不可重复读和幻读问...

江城宴的博客 1243

Spring事务传播行为和事务隔离级别

1、Spring声明式事务 声明式事务(declarative transaction management)是 Spring提供的对程序事务管理的方式之一。 Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中申明。用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。这样的好处是,事务管理不侵入开发的组件,具体来说,业务逻辑对象就不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改

haohaoxuexiyai的博客 443

spring 的事务隔离级别和事务传播行为

spring 的事务隔离级别和事务传播行为 Spring的事务控制可以分为编程式事务控制和声明式事务控制。 编程式事务 将业务代码和事务代码放在一起书写,它的耦合性太高,开发中不使用 声明式事务 其实就是将事务代码(spring内置)和业务代码隔离开发, 然后通过一段配置让他们组装运行, 最后 达到事务控制的目的. 声明式事务就是通过AOP原理实现的. TransactionDefinition spring事务定义参数的接口,比如定义:事务隔离级别、事务传播行为等等 ① 事务隔离级别 isolation:

成为自己的太阳的博客 607

spring事务的5种隔离级别和7种事务传播行为

Spring五个事务隔离级别和七个事务传播行为 1.脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 2.不可重复读:是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两 次读数据之间,由于第二个事务的修改,那么第一个事务两次读...

A390hours的博客 388

Spring事务的隔离级别和传播行为

原文链接 Spring事务的隔离级别和传播行为 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL、C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。例如:在关系数据库中,一个事务可以是一条SQL语句,

pgrightwu的博客 249

spring的事务有几种方式?简述spring事务的隔离级别和传播行为

最近面试被问到了这个问题,之前没有总结过,还有点懵,稍微总结一下 一、spring的事务特性,这个就不多说了,ACID 二、spring实现事务的方式: 1.编码方式 2.spring配置方式 3.注解式 基于AOP技术实现的声明式事务管理,实质就是:在方法执行前后进行拦截,然后再目标方法开始之前创建并加入事务,执行完目标方法后根据执行情况提交或回滚...

成长之路 1万+

浅析Spring事务传播行为和隔离级别

7个传播行为。4个隔离级别。 Spring事务的传播行为和隔离级别[transaction behaviorand isolatedlevel] Spring中事务的定义: Propagation(key属性确定代理应该给哪个方法添加事务行为。这种属性最重要的部份是传播行为。)有下面选项可供使用: PROPAGATION_REQUIRED–支持当前事务,假设当前没有事务。就新建一个事务。 这是最常...

u012424449的博客 214

spring 事务隔离级别和传播行为_Spring 中的事务传播行为

可以搜索微信公众号【Jet 与编程】查看更多精彩文章祝大家七夕节快乐!背景介绍Spring 框架应该是每一个人 javaer 都必须接触和学习的技术,Spring 公司所提供的各种框架是 Java 开发行业可参考的重要标准之一。Spring 中有 7 种类型的事务传播行为。事务传播行为是 Spring 框架提供的一种事务管理方式,它是 Spring 框架之中非常重要的一个技术点,毕竟事务关系到应用...

weixin_39738755的博客 176
上一篇: spring cloud zuul 配置请求并发
下一篇: Spring Boot CORS配置
嘿嘿不错
博客等级 码龄11年 10粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值