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,一经查实,立即删除!

相关文章

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

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

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;化学、应用物理和科技的极限是什么……“在达到完全开悟的道路上&…

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

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

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

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

对象构造函数的原型图

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

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

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

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

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

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

各位车友请注意&#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储存数据的…

redis rua解决库存问题_如何解决高并发下的库存安全问题,没你想得那么复杂(附源码)...

一、 问题不知道大家该开发中有没有遇到这样的一个问题&#xff0c;在电影院购票或者去网上买东西的时候&#xff0c;比方说当年哪吒大电影出来的时候&#xff0c;那抢票相当火爆啊&#xff0c;一票难求&#xff0c;那购票系统的后台是如何保证观众能买到自己喜欢的票同时不用担…

AI 白皮书:赢家、输家

来源&#xff1a;云头条引言&#xff1a;纵观历史&#xff0c;对企业界而言改变游戏规则的始终是技术。制造商取代手艺人&#xff0c;工厂从制造商手里接过接力棒&#xff0c;自动化和遥测技术取代大部分重复性的人力劳动。从个人计算机到互联网和移动商务&#xff0c;在过去的…

python 首次登陆outlook 脚本_记Python“用户环境”的一次完美应用

在之前写过一篇关于虚拟环境使用的文章&#xff0c;但是还没有好好的介绍一下 Python 的用户环境&#xff0c;原因是自己一直没遇到要使用 用户环境 的使用场景&#xff0c;所以就一直懒得写。恰巧这两天&#xff0c;自己遇到了一个使用用户环境的体验可以完爆虚拟环境的案例&a…

今日头条、抖音推荐算法原理全文详解!

来源&#xff1a;运营大叔本次分享将主要介绍今日头条推荐系统概览以及内容分析、用户标签、评估分析&#xff0c;内容安全等原理。一、系统概览推荐系统&#xff0c;如果用形式化的方式去描述实际上是拟合一个用户对内容满意度的函数&#xff0c;这个函数需要输入三个维度的变…

星梦缘陈彦妃_浙江舟山80后女演员,2003年出演偶像剧《星梦缘》,还是专业模特...

陈彦妃&#xff0c;1984年2月4日出生于浙江省舟山市&#xff0c;中国内地影视女演员、流行乐歌手、模特。陈彦妃是一个真性情的女孩&#xff0c;在高中时期拍摄了偶像剧《星梦缘》&#xff0c;在这部戏中&#xff0c;陈彦妃基本上是本色出演&#xff0c;进入大学之后&#xff0…

python hstack_Python小白数据科学教程:NumPy (下)

点击“简说Python”&#xff0c;选择“置顶/星标公众号”福利干货&#xff0c;第一时间送达&#xff01;本文作者&#xff1a;王圣元转载自&#xff1a;王的机器本文偏长(1.8w字)&#xff0c;老表建议先收藏&#xff0c;然后转发朋友圈&#xff0c;然后吃饭、休闲时慢慢看&…

MATLAB并行实现的简单方法

此方法只是利用了matlab的设定&#xff0c;不需要额外知识。 众所周知&#xff0c;matlab是单线程的&#xff0c;但matlab的每个应用窗口都是一个线程&#xff0c;因此可以同时开启多个MATLAB跑程序&#xff0c;占满CPU的所有core。 例如处理多个文件的计算&#xff0c;单线程…

POJ 1631 nlogn求LIS

方法一&#xff1a; 二分 我们可以知道 最长上升子序列的 最后一个数的值是随序列的长度而递增的 &#xff08;呃呃呃 意会意会&#xff09; 然后我们就可以二分找值了&#xff08;并更新&#xff09; //By SiriusRen #include <cstdio> #include <cstring> #incl…