Spring事物的一些笔记(六)

Spring事物注解@Transactional失效场景 概述 @Transactional注解相信大家都不陌生,平时在开发中spring框架中经常用到的事物注解。 他的作用就是控制程序执行的原子性,保证程序要提交就一起提交,如果出现错误,则一起进行回滚操作。 但是在使用@Transactional注解的时候有很多需要注意的地方,不然你就会发现这个事物注解会出现失效的情况。 在spring程序中如何去管理事物 事物管理在系统开发中是不可缺少的,在spri... 阅读详情
数据库隔离级别:
隔离级别值脏读不可重复读幻读说明
读未提交0是是是不锁表,且读未提交
不可重复读1否是否锁住相应的行,且不读提交信息 Oracle默认级别
可重复读2否否是Oracle会锁住相应的行, Mysql不会锁住相应的行,Mysql默认级别
串行化3否否否读写数据都会锁住整张表
  • 脏读:一事务对数据进行了增删改,但未提交,另一事务可以读取到未提交的数据。如果第一个事务这时候回滚了,那么第二个事务就读到了脏数据。

  • 不可重复读:一个事务中发生了两次读操作,第一次读操作和第二次操作之间,另外一个事务对数据进行了修改,这时候两次读取的数据是不一致的。

  • 幻读:第一个事务对一定范围的数据进行批量修改,第二个事务在这个范围增加一条数据,这时候第一个事务就会丢失对新增数据的修改。

小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

Spring隔离级别
  • ISOLATION_DEFAULT:用底层数据库的默认隔离级别,数据库管理员设置什么就是什么
  • ISOLATION_READ_UNCOMMITTED(未提交读):最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读)
  • ISOLATION_READ_COMMITTED(提交读):一个事务提交后才能被其他事务读取到(该隔离级别禁止其他事务读取到未提交事务的数据、所以还是会造成幻读、不可重复读)、sql server默认级别
  • ISOLATION_REPEATABLE_READ(可重复读):可重复读,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(该隔离基本可防止脏读,不可重复读(重点在修改),但会出现幻读(重点在增加与删除))(MySql默认级别,更改可通过set transaction isolation level 级别)
  • ISOLATION_SERIALIZABLE(序列化):代价最高最可靠的隔离级别(该隔离级别能防止脏读、不可重复读、幻读)
事物传播
  • PROPAGATION_REQUIRED(spring 默认) 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择,也是 Spring 默认的事务的传播。

  • PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。新建的事务将和被挂起的事务没有任何关系,是两个独立的事务,外层事务失败回滚之后,不能回滚内层事务执行的结果,内层事务失败抛出异常,外层事务捕获,也可以不处理回滚操作

  • PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。

  • PROPAGATION_NESTED 如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务,则按REQUIRED属性执行。它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效。

注意:事务需要结合项目实际情况,经过实际测试验证后进行确认,多种情况可能产生不同效果。

参考:https://blog.youkuaiyun.com/mawenshu316143866/article/details/81281443

Spring : Spring @Transactional事物创建 1.美图 2.前文回顾 先来回顾一下事物创建的代码片段: try { boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER); // 创建DefaultTransactionStatus对象实例 DefaultTransactionStatus stat... 阅读详情

相关推荐

麦当劳app之sign逆向分析

摘要:本文分析了麦当劳APP请求参数sign的逆向过程。通过抓包发现32位sign参数疑似MD5加密,使用frida-trace工具跟踪CC_MD5函数验证其为标准MD5算法。加密参数包含时间戳、token、版本号等固定和动态字段,拼接后经MD5加密生成sign。文章提供了JS和Python两种实现方案,包含完整的请求头参数和加密逻辑,最终成功获取API响应数据。该研究仅用于逆向技术学习,展示了移动应用常见加密参数的逆向分析方法。

佛系更新... 2438

Spring5 学习笔记4

1、什么是事务(1)事务是数据库操作的最基本的单元,逻辑上是一组操作,要么都成功,如果有一个失败则所有操作都失败2、事务四个特性(ACID)(1)原子性。

weixin_39327352的博客 261

Windows 64 位系统下安装配置 DOSBox 及 debug.exe

该篇博客同样作为类似问题 “如何在 Windows 64 位系统下进入 debug” 的答案。 很多同学初看王爽的《汇编语言》,或者因为其它原因需要进入 debug 调试模式下学习汇编语言的时候,会发现进入不了,出现类似以下的错误提示。 这是因为他们使用的是 64 位的 Windows 系统(Win 7,Win 8 以及 Win 10 等),而 64 位 Windows 系统不再支持在命令提示符窗口下进入 debug 调试模式。那么对于使用 64 位 Windows 系统的用户来说,该怎样才能够顺利进入 d

加号减减号的博客 5万+

美团二面:考我幻读,结果答的不好

首先来看看 MySQL 文档是怎么定义幻读(Phantom Read)的:翻译:当同一个查询在不同的时间产生不同的结果集时,事务中就会出现所谓的幻象问题。只要 T1 和 T2 时刻执行产生的结果集是不相同的,那就发生了幻读的问题,比如:T1 时间执行的结果是有 5 条行记录,而 T2 时间执行的结果是有 6 条行记录,那就发生了幻读的问题。T1 时间执行的结果是有 5 条行记录,而 T2 时间执行的结果是有 4 条行记录,也是发生了幻读的问题。MySQL 是怎么解决幻读的?

mxt51220的博客 499

Qi标准下的充电协议及其记忆技巧

记忆无线充电协议中的。

m0_73991989的博客 1320

RSL-RL:开源人形机器人强化学习控制研究库

摘要:RSL-RL是一款专为机器人领域设计的开源强化学习库,其核心特点是紧凑性、可修改性和高性能。该库聚焦PPO和BC两大主流算法,并整合了对称性增强、好奇心驱动等机器人专用技术。通过纯GPU训练优化,RSL-RL在大型仿真中展现出卓越的吞吐性能,已成功应用于腿足运动控制、全身协调等多个机器人研究场景。其轻量级架构包含运行器、算法和网络三个可独立修改的组件,支持TensorBoard等主流日志工具。该框架特别适合需要快速原型开发的机器人研究者,但不适用于通用机器学习基准测试。开源地址:https://git

2506_90492529的博客 1675

MySQL在RR级别下到底会不会造成幻读【转载】

说到快照读,就得先说一下快照,而说到快照,就得说说MVCC。快照是属于MVCC中的一个概念。在RR级别下,MySQL通过MVCC的技术会给每一个事务在启动的时候,创建一个一致性的快照视图,这个快照中的所有数据内容就是这个事务在启动时刻的生成的,后续数据库中的数据再怎么变化,这个快照的数据内容都不受它们的影响。而这个快照一直会伴随着整个事务的生命周期。在这个事务运行过程中的,所有的普通查询都会从这个快照中去获取数据,事务中的这些普通的查询就属于快照读。

秃了也弱了 598

Freeswitch 如何检测链路是否有回铃音

Freeswitch回铃音检测解决方案 问题描述:呼叫手机时,虽然信令正常(183/180),但部分手机无回铃音,导致坐席无法判断是否接通,用户体验差。 解决方案: 先播放本地音频作为回铃音 实时检测用户侧是否有声音输入 检测到声音后自动切换为用户侧音频 技术实现: 使用Freeswitch APP实现功能 创建结构体保存实例数据(包括铃声文件、会话句柄、VAD检测器等) 通过media bug机制实现音频流的替换 利用VAD(语音活动检测)技术监控用户侧声音 当检测到用户说话时自动终止本地铃声播放 该方案

2301_81507069的博客 51

幻读和不可重复读的区别

MySQl MySql默认的隔离级别为Repeatable Read,因此只会出现幻读的情况。 幻读 事务在插入已经检查过不存在的记录时,惊奇的发现这些数据已经存在了,之前的检测获取到的数据如同鬼影一般。 例子: 在事务1中,查询User表id为1的是用户否存在,如果不存在则插入一条id为1的数据。 select * from User where id = 1; 在事...

程序员囧辉 5万+

C# 调用高德地图关键词 API

今天我们要一起探索如何使用 C# 来调用高德地图的关键词搜索 API,从而实现精准的地理位置搜索功能。高德地图的关键词搜索 API 可以帮助我们轻松地实现这一点,它能够返回一系列匹配关键词的地点坐标和其他相关信息。通过简单的几行 C# 代码,我们就实现了调用高德地图关键词搜索 API 的功能。接下来,我们将在一个 C# 控制台应用中实现调用高德地图关键词搜索 API 的功能。此外,如果要在生产环境中使用,还需要考虑安全性问题,例如不要在客户端暴露 API 密钥。🔥关注墨瑾轩,带你探索编程的奥秘!

java专栏 1105

学Simulink——基于Simulink的单相PWM整流器PI电压外环+电流内环控制建模示例

本文详细介绍了基于Simulink的单相PWM整流器双闭环控制仿真方法。通过电压外环PI控制器调节有功功率生成电流指令,电流内环PI控制器实现正弦电流跟踪,最终达到输出电压稳定(400V±2V)、输入电流THD<3%、功率因数>0.99的目标。文章包含系统架构、数学模型、Simulink搭建步骤(主电路、PI控制器、SPWM调制等)及三种典型工况的仿真验证,并给出电感设计、数字实现等工程实践要点。该方案克服了传统整流器高谐波、低功率因数的问题,为绿色电源开发提供了可验证的仿真模型。

xiaoheshang_123的博客 75

mysql事务(ACID,脏读,不可重复读,幻读,隔离级别)

mysql事务(ACID,脏读,不可重复读,幻读,隔离级别)

SSS_HuLiang的博客 420

python全栈入门到实战【基础篇 02】环境搭建:Python解释器与PyCharm、VSCode编辑器安装配置详解

本文详解Python环境搭建步骤。首先安装解释器(运行代码核心),需从官网下载,选3.8及以上版本(勿选2.x)。Windows安装必勾“Add Python.exe to PATH”,验证用`python --version`;Mac选universal2安装包,验证用`python3 --version`。 编辑器二选一:PyCharm社区版(免费,新手推荐),安装后需配置解释器路径;VSCode轻量,需装Python插件并选择解释器。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 5万+

Spring学习笔记(六)注解方式配置事物

当我们的项目开发有对数据库的操作时,经常需要对事物进行管理; 使用Spring框架,spring容器提供对事物进行管理的配置,使用简单的配置便可将繁琐的事物管理托管给spring容器; Spring提供两种配置事物的方式,一种是采用注解方式,另一种是xml文件配置方式; 采用注解方式配置步骤: 首先在spring的配置文件中的beans标签加入事物的命名空间: xmlns:tx="htt

金禅的专栏 1153

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...

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spring学习笔记(六)基于xml文件方式配置事物

之前提到了使用spring基于注解方式配置事物,它还支持xml文件方式配置事物; 在xml文件配置方式中,我们使用到了事物管理器,AOP,通知等; 首先在配置文件中配置好事务管理器:      然后配置一个事物通知: transaction-manager="txManager" id="txAdvice"> name="get*" pro

金禅的专栏 1542

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spring事物

Spring事物基础概念

cqq00的博客 681

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

对于Spring事物的理解

对于Spring中的transaction的一些理解

EDG_Clearlove_7的博客 286

spring的事物

不知道为啥,重新写了一遍声明式事物,就可以使用了,原来的报错找不到Bean。事物处理后,对数据的修改是永久的,一旦执行事物成功,就刷新到数据库。使用这种方式的前提是,已经集成了spring-mybatis。这是我第三次接触事物了,mysql一次,以前的也看过一次。所以,我们开启事物,就是为了利用上面的四个特点,解决问题。在事物的开启和结束,数据库的完整性不被破坏。多线程时,要保证数据的安全,也就是并发安全。至于集成mybatis的代码,在前面写过博客。多条sql保证同时成功,同时失败。打代码还是太马虎了。

qx020814的博客 1980

Spring事物管理

事物可以看做是由对数据库的若干操作组成的一个单元事物是一系列的动作,一旦其中有一个动作出现错误,必须全部回滚,提供将事物中对数据库的所有已完成的操作全部撤销,滚回到事物开始的状态,避免出现由于数据不一致而导致接下来的一系列错误.事物的出现是为了确保数据的完整性和一致性,确保用户的每一个操作都是可靠的,事物中的每一步操作都必须执行,只要有发生异常就回退到事物未开始的操作状态,这些事物要么都执行,要么都取消,从而保证数据满足原子性,一致性.在目前的企业开发中,事物的管理是必不可少的.

weixin_52629592的博客 546

Spring 使用注解方式进行事物管理

Spring 使用注解方式进行事物管理大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅。事物注解方式: @Transactional当标于类前时, 标示类中所有方法都进行事物处理例子:@Transactional public class TestServiceBean implements TestService {}当类中某些方

张勤一 1129

Spring(六)——声明式事物控制

目录 编程式事务控制相关对象 编程式事务控制三大对象 基于XML的声明式事务控制 声明式事务控制的实现 使用注解配置声明式事务控制 编程式事务控制相关对象 编程式事务控制三大对象 1、PlatformTransactionManager PlatformTransactionManager接口是spring 的事务管理器,它里面提供了我们常用的操作事务的方法。 注意:PlatformTransactionManager是接口类型,不同的 Dao层技术则有不同的实现类,例如:D...

龍弟-idea的博客 4644

Spring的事物管理

本文介绍了Spring对事物管理的两种方式,即编程式事物和声明式事物。 一.认识事物 事物是以可控制的方式限定程序对数据资源进行访问的一组操作;它的目的是为了保证程序运行中数据资源的正确性和完整性,为了达到这个目的,事物拥有以下四个属性: 1.原子性:原子性要求事物所包含的这一组操作是一个不可分割的整体,要么这组操作全部成功,要么其中一个失败,即整个事物失败; 2.一致性:一致性要求事

wj481199的专栏 540

Spring + mybatis事物管理

Spring和mybatis结合后,由Spring接管mybtis事物。此配置适应于扩展性事物。具体配置如下 第一步:applicationContext.xml相关配置如下: <bean id="transactionManager" class="org.springframework.jdbc.

wangzhongfeng1112的专栏 1556

Spring基础篇-事物(声明式事物与编程式事务)!

getTransaction(@Nullable TransactionDefinition definition) 根据传入的definition,获取一个事物对象,在这里面,它定义了一些事物的基本规则,如传播性,隔离级别等。例如,你使用了jdbc,则可以使用DataSourceTransactionManager作为事物的管理器,如果使用的是Hibernate,则可以使用HibernateTransactionManager作为事物的管理器!

H935961611的博客 369

spring事物

spring事物--实现原理--隔离级别

weixin_61300833的博客 869
上一篇: Java数据结构的一些笔记(七)
下一篇: Java IO的一些笔记(八)
我的小封
博客等级 码龄18年 37粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值