spring 事务隔离级别和传播行为_Spring事务的传播行为案例分析

0d7bc4b8887fff3ebf48e10769f8a788.png
网上关于Spring事务传播性以及隔离型的文章漫天盖地,还有不负责任的直接复制名词意思,文章虽然很多却是看的云里雾里,我们今天将给出案例分别和大家一起学习。

1、spring给出经常面试的考点Spring事务的4个特性含义---这个很容易理解

2、spring事务传播特性的定义以及案例分析

一、事务的特性ACID

这四个英文单词拼写我一直记不住,求记忆方法

  • 原子性(Atomicity):事务是一系列原子操作,要么全部成功,要么全部失败。
  • 一致性(Consistency):一旦完成(不管是成功还是失败),确保它所在的一系列业务状态保持一致,状态都是成功,或者都是失败,不能一部分成功一部分失败。
  • 隔离性(Isolation):不同事务同时进行某项业务,处理相同的数据时候,需要保证事务之间相互独立,互相之间数据不影响。
  • 持久性(Durability):一旦事务完成,无论发生什么系统性错误,事务执行后的数据都被持久化了,不会因为重启或其他操作对数据进行更改。

二、spring事务传播特性的定义以及案例分析

我们先给出定义再分别进行简单的代码分析

给出百度图片,请大家参考,首先生命力如果想在工程中运用事务spring 的xml必须开启事务,以下这些特性一般都是在xml属性中进行配置。

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

类似这种的配置一定要有,否则万事具备只欠东风,这个是DB事务有JTA和JPA以及Herbernate等,这里就不展开说明,可自行百度。

9e0219a824dd298c6f792a0baaa3a52b.png

三、案例解析事务传播7大行为

1、无事务,这个时候id 为16的第一次插入成功,第二次插入的时候失败,库中留存第一次的数据

63b960ef155209ae705796a0006ec32c.png

无事务运行

2、propagation_required,默认事务的传播行为required,在进行实验2的时候将表中id为16的数据先删除以免影响接下来的测试。@Transactional(propagation=Propagation.REQUIRED) == @Transactional这两个的作用是一样的没有事务创建一个事务执行,

326ae06f6adf776ec2d2166d3e8e714d.png

事务的传播特行为为required 结果是因为主键冲突将事务进行了回滚,所以两条数据都没有插入进去。

3、propagation_supports,如果当前程序存在事务就加入该事务运行,如果不存在事务则在非事务中运行

ff1cba9565e09d6dd535aafba376dcf7.png

事务的传播行为性为supports 因为调用方未用事务那么就在非事务中运行,所以插入了first的第一条数据。

4、propagation_mandatory,必须在一个事务中运行,否则就会抛出异常mandatory 这个单词有强制性的意思我们默认用required 而不用mandatory,是因为mandatory不能自动创建事务。

855005af2766e21cce6aec1195d9a4ae.png

事务的传播行为为manatory 因为调用的外层没有事务,所以两条数据没有插入。大家想想下面这种写法会发生什么现象

76e5db9246abac52c20b0ec2b9ba1f76.png

事务的传播行为mandatory

5、propagation_ required _new,不管事务是不是存在,都会另起一个事务,如果事务存在则将当前事务挂起,重新执行新加的事务

d9dc10b9bde851207899a387e7919a70.png

事务的传播行为required_new 结果和require一样,两条数据都没有入库,唯一健冲突导致第一条数据回滚,大家可以思考下我下面这两种情况。

1bbd5cfc704eb4d6fbe6fa9333f991b2.png

情景1新起的事务抛出异常会不会让外围事务回滚?

a4510b6d76cb2a2f23c4313d3174b0a7.png

情景2外围事务失败会不会导致新起事务已提交的回滚?

6、 propagation_ not _support,表示不在事务中运行,如果当前存在事务则将事务挂起

4c6452a63c9dcb4922f2826804497b53.png

事务的传播行为not_suppoted 这种情景下,如果你根据我的思路一步走的应该可以想到id 为17的入库,第二条主键冲突虽然然而notSupportSonTransationsl()这个方法没有事务所以不影响第一条入库情况,但是外围事务id为16的要进行回滚了,所以库中只有一条数据id=17的。

7、 propagation_never,表示当前方法不能运行在事务当中,如果有事务则会抛出异常---->Existing transaction found for transaction marked with propagation 'never'

dbfd83947822ab310e0bb258e83db387.png

事务的传播行为NEVER

8、 propagation_nested,这种嵌套的事务,外围如果没有事务则自己另起一个事务,可独立与外围事务进行单独的提交或者回滚(这句话不要理解错了),下面这个案例同样的数据一条也没有落入库中,

e6795d9c1c2baa9990eecf1aeaa74db7.png

事务的传播行为nested

事务的传播行为级别简单的演示完毕

作者:宜信技术学院,王巧敏

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

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

相关文章

[matlab]斜阶梯式长条引起的重力异常计算

画的是《重力学与固体潮》那本书的斜阶梯的重力异常 function [gravity]draw_gravity_dixing(h1,h2,alpha,xigma,x0,z,direction) %h1100;%上表面 %h2200;%下表面 %x00;%移动原点位置&#xff0c;向右为正 %xigma3*10^3;%剩余密度 pi3.1415926535 %alphaalpha*pi;%倾角%采样区…

[Android]使用MVP解决技术债务(翻译)

以下内容为原创&#xff0c;欢迎转载&#xff0c;转载请注明 来自天天博客&#xff1a;http://www.cnblogs.com/tiantianbyconan/p/5892671.html 使用MVP解决技术债务 原文&#xff1a;https://medium.com/picnic-engineering/tackling-technical-debt-with-mvp-67e805ed5103#.…

Science:睡眠剥夺影响大脑思考竟是因为蛋白质罢工了!

来源&#xff1a;生物探索睡眠会影响我们的思维&#xff0c;当我们获得充足的睡眠后&#xff0c;大脑思维会变得清晰&#xff1b;而当我们睡眠不足时&#xff0c;大脑会变得迟钝。那么进入睡眠状态后&#xff0c;大脑又是如何调整以保证睡醒后脑回路清晰的呢&#xff1f;近日&a…

【Matlab】滤波器常用命令

在命令行中输入&#xff1a; designfilt然后就会弹出滤波器的种类&#xff0c;选定后会让你填参数。 参数填好之后点确定&#xff0c;会在命令行窗口生成这个滤波器&#xff0c;复制到编辑器里直接用就好。 %读取音频文件% [x,Fs]audioread(C:\Users\16000\Desktop\testfile.…

element ui input视图没刷新_[Selenium自动化测试实战] 如何在UI自动化测试中加入REST API的操作...

问题当我们描述一个“好的自动化测试用例”时&#xff0c;经常出现标准是&#xff1a;精确。自动化测试用例应该测试一件事&#xff0c;只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。独立。自动化测试用例不应该受测试套件中任何其他测试用例…

语句中如何结束本循环进入下一循环_Python3基础语法(八)--控制循环 while...

一、while 简介Python 的循环有 for 和 while 两种&#xff0c;while 为条件控制循环&#xff0c;通过循环控制条件表达式控制循环结束。流程图如下&#xff1a;Python 中 while 语句的格式如下&#xff1a;while <条件表达式>:【语句块】释&#xff1a;当 while 的 <…

关于生命、宇宙和万事万物的42个终极问题

来源&#xff1a;世界科技创新论坛" 我们的宇宙是否稳定&#xff0c;黑洞熵的起源和温度是什么&#xff0c;爱因斯坦的相对论和标准场论总是有效的吗&#xff0c;时空几何中是否存在奇异的性质&#xff0c;化学、应用物理和科技的极限是什么……“在达到完全开悟的道路上&…

【matlab】画图的文字调整大小

hxlabel(x); set(h,Fontsize,14);hylabel(df(x)/dx); set(h,Fontsize,14);htitle(精确解和二阶差分对比); set(h,Fontsize,14);hlegend(精确的一阶偏导,二阶差分得到的偏导); set(h,Fontsize,14);这样就行了

python decimal_【进阶】嫌弃Python慢,试试这几个方法?

(给机器学习算法与Python学习加星标&#xff0c;提升AI技能)选自towardsdatascience&#xff0c;作者&#xff1a;Martin Heinz本文转自机器之心(nearhuman2014)本文将介绍如何提升 Python 程序的效率&#xff0c;让它们运行飞快&#xff01;计时与性能分析在开始优化之前&…

王道8套有变化吗_求求你别再套花艺设计公式了

花艺设计也有公式吗&#xff1f;确实有花艺设计只有公式吗&#xff1f;并不是无论是哪门设计学科&#xff0c;公式这种东西&#xff0c;谈多了是否有种千篇一律的感觉&#xff1f;设计风格相似的花艺师要越来越多&#xff0c;一时间竟然以为都是一个人。就和网红一样&#xff0…

对象构造函数的原型图

对象的定义其实很广泛,万物皆为对象,我们创建对象一般都是用构造函数来创建的,这里我们来说说构造函数创建对象的原型图把. 这个问题有点抽象,举个例子来说,方便一点: 这是我们构造函数,这里我们要结合一张 图来说明就更清楚了,这里我们就用一个实例p1好了,其他两个就不用了. 这…

【服务器】sbatch 提交作业脚本

在已经写好的脚本的#!bin/bash下面加上&#xff1a; #SBATCH --get-user-env #SBATCH --mail-typeend #SBATCH -J simple_module #SBATCH --nodes4 #SBATCH --ntasks-per-node24然后退出即可。 运行时使用 sbatch ./name_of_bash即可 其中 #SBATCH -J simple_module指定了提…

站在AI与神经科学交叉点上的强化学习

来源&#xff1a; 混沌巡洋舰一&#xff0c;强化学习概述让机器来决策&#xff0c;首先体现在如何模仿人类的决策。对于决策这个问题&#xff0c; 对于人类是困难的&#xff0c; 对于机器就更难。而强化学习&#xff0c; 就是一套如何学习决策的方法论。强化学习最初的体现就是…

澜起科技云计算服务器_服务器严重缺货!云应用大爆发!云计算正强势起爆(附龙头)...

催化因素&#xff1a;这两天全国上千万企业、近两亿人开启在家办公模式。阿里、华为、腾讯等各大网络办公平台纷纷告急。对云服务的需求大增也让服务器生产企业开足马力&#xff0c;春节假期里&#xff0c;山东浪潮集团就接到了1500台服务器的订单。目前&#xff0c;多家软件服…

【matlab】零相位延迟滤波器

使用designfilt命令自动生成滤波器&#xff0c; 然后my_filt‘生成的滤波器代码’&#xff0c; 最后filtfilt(my_filt,signal)

博客迁移到简书

由于博客园对markdown的支持不是很好&#xff0c;hexo访问速度比较慢&#xff0c;后续博客迁移到简书&#xff0c;简书地址 http://www.jianshu.com/users/7966a93b66ce/latest_articles 。 转载于:https://www.cnblogs.com/actionke/p/5899368.html

车险赔付率分析报告_车险有变!价格…

各位车友请注意&#xff01;《商业车险综合示范条款(2020版征求意见稿)》于近日发布向社会公开征求意见从修订版条款的内容来看大幅删减了责任免除项目扩展了保险责任在最大化让利于消费者的同时努力提升消费者体验那么&#xff0c;此次修订版有哪些具体的亮点呢&#xff1f;一…

“众声喧哗”中的VR,谁来买单?

来源&#xff1a;VR每日必看未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&…

.npy文件_Numpy库使用入门(六)文件的存取

ERNIE&#xff1a;BERT&#xff0c;你看到我的npy了吗&#xff0c;我记得我放在这个文件夹里的呀(」&#xff1e;&#xff1c;)」BERT&#xff1a;就你还有npy&#xff1f;我还单着呢&#xffe3;へ&#xffe3;ERNIE&#xff1a;你想什么呢&#xff1f;我指的是numpy储存数据的…

【linux】设置镜像源

首先找到默认的源 $cd /etc/apt $cp source.list source.list_default然后替换掉source.list文件为国内源。 清华源