Spring的事务管理

tx标签用于配置事务管理用于声明和配置事务的相关属性

transaction-manager指定一个事务管理器的引用,用于管理事务的生命周期
propagation指定事务的传播属性,决定了在嵌套事务中如何处理事务。
isolation指定事务的隔离级别,用于控制事务之间的隔离程度。
timeout指定事务的超时时间,用于防止长时间的事务占用数据
readOnly指定事务是否为只读事务,若为只读事务,则不允许对数据库进行写操作。
rollback-for指定需要回滚的异常类型,当出现指定的异常时,事务将回滚。
no-rollback-for指定不需要回滚的异常类型,当出现指定的异常时,事务不会回滚。

生命周期

数据库初始状态->start->sql执行->commit、rollback->数据库reflash

传播属性

Required(需要)
Mandatory(强制必须)
RequiresNew(需要新的)
Supports(支持)
NotSupported(不支持)
Never(不用)
  • Required(需要)    当前方法必须要求开启事务,如果当前线程不存在事务,则开启新的事务,如果当前线程已经存在事务,就加入到当前事务
  • Mandatory(强制必须)    当前方法必须要求事务,如果当前线程不存在事务,就抛出异常,如果存在,就加入到事务里。
  • RequiresNew(需要新的)    当前方法必须要求开启新的事务,如果当前线程已经存在事务上下文,就暂停当前事务,等到新事务结束之后,再继续恢复之前的当前方法支持事务,如果当前线程存在事务,就加入到事务中去,如果不存在,不做任何操作。
  • Supports(支持)    当前方法支持事务,如果当前线程存在事务,就加入到事务中去,如果不存在,不做任何操作。
  • NotSupported(不支持)    当前方法不支持事务,如果当前线程存在事务,就挂起当前事务,执行完当前方法,恢复事务。一般情况下在查询的时候使用,如果一个方法只是查询,并且非常耗时,就可以使用Not Support,避免事务时间超长。
  • Never(不用)    当前方法不支持事务,如果当前线程存在事务,则抛出异常
     

隔离级别

读已提交 READ_COMMITTED
读未提交 (READ_UNCOMMITTED)
可重复读  (REPEATABLE_READ)
可序列化读  (SERIALIZABLE)
  • "读未提交(READ_UNCOMMITTED)"    数据库最弱的隔离级别(完全不隔离),存在脏读、不可重复读、幻读的诸多问题
  • "读已提交READ_COMMITTED"    不允许事务B读取事务A还未提交的update操作更新后的数据(但是可见)。避免了脏读,但还可能出现不可重复读、幻读。
  • "可重复读(REPEATABLE_READ)"    所有被Select获取的数据都不能被修改,但是却没有办法控制幻读(可以增加数据)。
  • "可序列化读(SERIALIZABLE);"    事务之间最高的隔离界别,只能顺序的读取数据,当一个事务在读取和修改数据的时候,另外一个事务只能挂起,直到正在读取和修改数据的事务提交之后,挂起的事务才能执行.

数据库并发性问题

脏读    "对未提交的数据的读取。
一个事务对另一个事务中待定状态的数据,读取到了并且处理,所产生的依赖关系。"

不可重复读    同一个事务在两次读取之间该数据被其它事务所修改,两次读取的数据不同。


幻读    一个事务按相同的查询条件重新读取以前检索过的数据,却发现其他事务插入了满足其查询条件的新数据

基本性质

原子性    (Atomicity)一个事务中的所有操作,要么全部成功,要么全部失败
一致性 (Consistency)事务执行前后,基于原子性,保证数据的一致性,例如A,B帐号之间的转账。
隔离性 (Isolation)事务和事务的可见性
持久性 (Durability)事务完成以后,所有的数据都将持久到数据库中,不会因为其他原因而丢失

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

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

相关文章

【VUE3】npm : 无法加载文件 D:\Program\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。

npm : 无法加载文件 D:\Program\nodejs\npm.ps1。未对文件 D:\Program\nodejs\npm.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_ Execution_Policies。…

品优购PC端静态页面(列表页、详情页、登录页)

首页可转至品优购静态首页制作查看,接下来继续制作品优购静态页面(列表页、详情页、登录页)。 一、列表页 品优购列表页制作准备工作 列表页面是新的页面,我们需要新建页面文件 list.html因为列表页的头部和底部基本一致&#xff…

前端页面或弹窗在线预览文件的N种方式

需求:后端返回给前端一个地址后,在前端页面上或则在弹框中显示在线的文档、表格、图片、pdf、video等等,嵌入到前端页面 方式一: 使用vue-office 地址:vue-office简介 | vue-office 个人感觉这个插件是最好用的&#x…

成都睿明智科技有限公司抖音电商服务的新引擎

在这个短视频风起云涌的时代,抖音不仅成为了人们休闲娱乐的首选,更是商家们竞相角逐的电商新蓝海。在这片充满机遇与挑战的海域中,成都睿明智科技有限公司如同一艘装备精良的航船,引领着众多企业向抖音电商的深水区进发。今天&…

独家|京东调整职级序列体系

原有的M、P、T、S主序列将正式合并为新的专业主序列P。 作者|文昌龙 编辑|杨舟 据「市象」独家获悉,京东已在近日在内部宣布对职级序列体系进行调整,将原有的M、P、T、S主序列正式合并为新的专业主序列P,合并后的职级体系将沿用原有专业序…

免费开源的微信开发框架

请求参数 Header 参数 export interface ApifoxModel {"X-GEWE-TOKEN": string;[property: string]: any; } Body 参数application/json export interface ApifoxModel {/*** 设备ID*/appId: string;/*** 是否允许*/enabled: boolean;[property: string]: any; }…

在内网工作时,如何使用 vscode remote ssh 去连接内网服务器?

来源:https://stackoverflow.com/questions/56671520/how-can-i-install-vscode-server-in-linux-offline 看这个回答: 一般来说,内网会提供 vscode 安装包,remote-ssh 的 vsix,先安装好。 随后,保证自己…

YOLOv8实战无人机视角目标检测

本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对无人机目标数据集进行训练和优化,该数据集包含丰富的无人机目标图像…

【二维动态规划:交错字符串】

介绍 编程语言:Java 本篇介绍一道比较经典的二维动态规划题。 交错字符串 主要说明几点: 为什么双指针解不了?为什么是二维动态规划?根据题意分析处转移方程。严格位置依赖和空间压缩优化。 题目介绍 题意有点抽象&#xff0c…

小米路由mini刷PDCN教程补充

花了10天帮助一个网友解决小米路由刷PDCN做打印服务器失败的过程,经历颇多。特别把中间的一些坑写出来,希望大家不要遇到。 首先网上好多教程写的都不错,很适合小白。推荐如下: 刷breed和PDCN方法: 小米路由器mini刷…

Unity ShaderLab 实现交互地毯

实现思路: 将一个位置坐标值传入到shader的顶点着色器中,和这个值位置相同的顶点沿着法线的y轴方向偏移,然后计算这个值与顶点的距离,在这个范围内的顶点,和凸起的点的位置做插值操作。 Shader Graph实现如下&#x…

浏览器语言和Accept-Language请求头指纹

注意:本文仅供学习交流使用 Navigator 对象的语言设置可以帮助网站识别您的首选语言。网站会基于这个值,调整向您呈现内容的所用语言。与其他任意Navigator 对象值一样,它也可用于浏览器指纹识别。 1. 浏览器语言:代表浏览器界面显…

数字IC后端实现之PR工具中如何避免出现一倍filler的缝隙?

在数字IC后端实现中,由于有的工艺foundary不提供Filler1,所以PR工具Innovus和ICC2在做标准单元摆放时需要避免出现两个标准单元之间的缝隙间距是Filler1。为了实现这个目的,我们需要给PR工具施加一些特殊的placement constraint(典…

03.ES7 04.ES8

3.1.Array.includes Includes 方法用来检测数组中是否包含某个元素&#xff0c;返回布尔类型值 <script>// includes const mingzhu [王二,张三,李四,王五];//判断console.log(mingzhu.includes(张三));//trueconsole.log(mingzhu.includes(周六));//false//indexOf …

离线安装 Docker-IO:详细步骤指南

离线安装 Docker-IO:详细步骤指南 一、准备工作1.1 下载 Docker 离线安装包1.2 准备安装环境1.3 配置防火墙和 SELinux(可选)二、上传和解压离线安装包2.1 上传安装包2.2 解压安装包三、安装 Docker-IO3.1 移动 Docker 文件到系统目录3.2 配置 Docker 服务3.3 赋予服务文件执…

单细胞细胞通讯全流程分析教程,代做分析和辅导

0. 分析参数文件和细胞通讯的演示数据 0.1 细胞通讯分析总的参数文件&#xff0c;后面部分细胞通讯分析模块会用到 分析参数文件 参数文件名称&#xff1a;total_analysis_params_demo.xlsx &#xff0c;很多分析模块都是这个总的参数文件&#xff0c;我的这个总的参数文件如…

Flume 与 Kafka 整合实战

目录 一、Kafka 作为 Source【数据进入到kafka中&#xff0c;抽取出来】 &#xff08;一&#xff09;环境准备与配置文件创建 &#xff08;二&#xff09;创建主题 &#xff08;三&#xff09;测试步骤 二、Kafka 作为 Sink数据从别的地方抽取到kafka里面】 &#xff08;…

从零开始理解JVM:对象的生命周期之对象销毁(垃圾回收)

一、JVM参数 在学垃圾回收器之前&#xff0c;我们先要知道&#xff0c;jvm参数是怎么回事。因为配置各种回收器&#xff0c;必须对应各种参数设置。 标准参数&#xff08;-&#xff09; 所有的JVM实现都必须实现这些参数的功能&#xff0c;而且向后兼容 -help-version 非标准参…

win10中使用ffmpeg的filter滤镜

1 给视频加文字水印 1.1 添加播放时间 ffmpeg -i input.mp4 -vf "drawtextfontfileC\\:/Windows/fonts/consola.ttf:fontsize30:fontcolorwhite:timecode00\:00\:00\:00:rate25:textTCR\::boxcolor0x000000AA:box1:x20:y20" -y output.mp4 在视频的x20:y20位置添加t…

模拟器快速上手,助力HarmonyOS应用/服务高效开发

文章目录 1 创建模拟器1&#xff09;打开设备管理界面2&#xff09;设置本地模拟器实例存储路径3&#xff09;创建一个模拟器&#xff08;1&#xff09;选择模拟器设备&#xff08;2&#xff09;创建模拟器&#xff08;3&#xff09;启动模拟器&#xff08;4&#xff09;关闭模…