java中事务特性_「java三分钟」事务的传播特性详解

78e279b16fbf1da47ee94112cd719d85.png

关注我,每天三分钟,带你轻松掌握一个Java相关知识点。

事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。

换言之,一个带事务的方法调用了另一个带事务的方法,被调用的方法它怎么处理自己事务和调用方法事务之间的关系。

spring给出了7种解决方案,我们可以通过指定某种方案来解决不同的问题。(以下都是以被调用方法来说的)

3b0cb9498146d7c547c1fe69bd0a7375.png

传播特性的枚举类

f900ecf92579a1a7430fe12707d2c9d7.png

propagation_requierd:如果被调用的时候,调用我的方法没有事务,就给自己新建一个事务,如果调用我的方法已存在一个事务了,那么我就加入到这个事务中,这个是默认选项,也是最常见的。

bbb回去看aaa有没有事务,如果有就加入到aaa的事务中,即如果aaa中出现异常,那么aaa和bbb都回滚。

这个属性就是要求我当前方法至少处于一个事务当中。

propagation_supports:支持调用方法事务,如果调用方法没有事务,我就以非事务方法执行。

aaa有事务,bbb就跟着aaa回滚,aaa没有事务,那么bbb中出现异常了我也不回滚。

这个属性是如果你有我就加入你,如果你没有我也不强求。

propagation_mandatory:使用当前事务,如果没有当前事务,就抛出异常。

aaa如果没有事务,到bbb的时候直接抛出异常。

这个属性要求你要调用我,就必须有事务。

propagation_required_new:新建事务,如果当前存在事务,把当前事务挂起。

bbb看aaa有事务,就把aaa的事务挂起,aaa事务就先不管用了,bbb自己新搞一个事务,自己提交或者回滚完,aaa事务才起作用。

propagation_not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

bbb自己不走事务,如果aaa有事务,那就把aaa的事务暂时置为无效,等bbb执行完再放回来。

propagation_never:以非事务方式执行操作,如果当前事务存在则抛出异常。

bbb自己不走事务,而且调用bbb的方法也不能有事务,否则抛异常。

propagation_nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作。

这里涉及到嵌套事务的概念了,嵌套事务是一个外部事务的一个子事务,是一个外部事务的一个组成部分,当嵌套事务发生异常,而回滚,则会恢复到嵌套事务的执行前的状态,相当于嵌套事务未执行。如果外部事务回滚,则嵌套事务也会回滚;外部事务提交的时候,它才会被提交。

propagation_required_new和 propagation_nested的最大区别在于, propagation_required_new完全是一个新的事务, 而 propagation_nested则是外部事务的子事务, 如果外部事务 commit, 嵌套事务也会被 commit, 这个规则同样适用于 roll back.。

到此为止,我们把事务这块主要属性基本讲解完了,下一期我会就@Transactional以及前面几期讲的事务属性做一个总结,让大家对事务有个整体的认知。

以上就是今天的知识点,各位小伙伴get到吗?创作不易,望各位多多点赞收藏,有什么建议可以留言告诉我,我会积极采纳!

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

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

相关文章

基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

前言上一篇 基于ABP落地领域驱动设计-01.全景图 概述了DDD理论和对应的解决方案、项目组成、项目引用关系,以及基于ABP落地DDD的通用原则。从这本篇开始,会更加深入地介绍在基于 ABP Framework 落地DDD过程中的最佳实践和原则。围绕DDD和ABP Framework两…

每日一笑 | 实名举报校长拿两份工资!

全世界只有3.14 % 的人关注了数据与算法之美(图源网络,侵权删)

159个故事串起三千年大历史!这套“儿童版史记”太无敌了!

▲数据汪特别推荐点击上图进入玩酷屋17世纪英国哲学家培根说“读史使人明智”,意思是真实、鲜活的历史,不仅能极大拓宽孩子眼界,更能让孩子以古人为鉴,树立远大的志向,对成长大有助益。在我们的学生时代,认…

再见,REST,你好,gRPC

gRPC是一个开源的远程过程调用框架,用于服务之间的高性能通信。服务之间的通信可以使用各种语言,通过可插拔的负载均衡、追踪、健康检查和身份验证,这让它被认为是一种非常高效的方法。在默认情况下,gRPC使用协议缓冲(…

全校师生放6天春假;清华大学设立天文系;郭守敬望远镜光谱数突破千万;《自然》发表最新发现;百度败诉需道歉;这就是今天的大新闻...

今天是3月29日农历二月廿三今天星期五早上上班等了N趟车愣是没挤上去下面是今天的大新闻全校师生放6天“春假”(中国青年网)3月28日,四川西南航空职业学院发布了《关于“泛美春假”的放假通知》,要求在放假时间总量不变的情况下&a…

jenkins java反序列化_Jenkins “Java 反序列化”过程远程命令执行漏洞

###漏洞原理反序列化是指特定语言中将传递的对象序列化数据重新恢复为实例对象的过程,而在这个过程中会执行一系列的字节流解析和对象实例化操作用于恢复之前序列化时的对象。在原博文所提到的那些 Java 应用里都有特定的接口用于传递序列化对象数据,而在…

WPF DataGrid 在Header中显示行号

在Datagrid中显示行号&#xff0c;如果你绑定的datacontext中没有序号&#xff0c;又想要显示序号的时候&#xff0c;可以按照本文的方法显示喽~效果如下图&#xff1a;来看看代码吧~MainWindow.xaml<Window x:Class"wpfcore.MainWindow"xmlns"http://schema…

每日一笑 | 爱的魔力转圈圈~

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;素材源网络&#xff0c;侵权删&#xff09;

怎样维护成功的开源项目

开源可不仅仅是将代码扔到网上就万事大吉了&#xff0c;将开源项目变成能让自己引以为豪的东西才算成功。那么&#xff0c;你需要注意哪些方面呢&#xff1f; 写好指导性文字 每一个开源项目有三样东西是少不了的&#xff1a;项目目标和方法的简要说明、如何参与和授权许可。最…

技术管理中的手段——奖励和惩罚

对于技术出身的同学来说&#xff0c;一旦晋升为管理岗&#xff0c;则意味着面临很多棘手的问题&#xff0c;例如&#xff1a;手下的人不听管教&#xff0c;无法按时完成任务等等。一般凭技术晋升的同学&#xff0c;自然是技术中的佼佼者&#xff0c;作为团队中的骨干&#xff0…

用科学实验玩“坏”二十四节气,中华传统还能这么学,科学、节气、民俗三重启蒙!...

▲数据汪特别推荐点击上图进入玩酷屋之前我们“迪比的冒险之旅”和“delightmom魔幻科学实验”做完团购活动之后&#xff0c;很多妈妈都跟小木说拿回去孩子特别喜欢&#xff0c;每个实验做了好几遍还不尽兴&#xff0c;经常追问小木有没有新的实验更新。看下图孩子玩的多么开心…

java 1.8 vm_HotSpot虚拟机在java 1.8中的新实现

HotSpotJava HotSpot 虚拟机是 Java SE 平台的一个核心组件。它实现 Java 虚拟机规范&#xff0c;并作为 Java 运行时环境中的一个共享库来提供。作为 Java 字节码执行引擎&#xff0c;它在多种操作系统和架构上提供 Java 运行时设施&#xff0c;如线程和对象同步。它包括自适应…

用BenchmarkDotNet看Method

在前面的文章中看了Property的几种不同访问方式《用BenchmarkDotNet看Property》&#xff0c;性能调用上的差别明显&#xff0c;那同样作为class里重要成员&#xff0c;Method性能如何呢&#xff1f;下面是被测试方法public class MyClass{public string MyMethod(){return Dat…

美国老师用的思维导图书,真正培养孩子的思维能力!

▲数据汪特别推荐点击上图进入玩酷屋小木读大学的时候&#xff0c;无意间在图书馆接触到了东尼博赞的《思维导图》。当时有好几个朋友和我推荐过这本书&#xff0c;我就借来看了。阅读之后&#xff0c;我发现对我来说&#xff0c;这真是不可多得一本好书——它改变了我20多年的…

filesystemwatch java_C#方法的委托和java中的回调

先看个效果20130415.C#监视文件夹,显示文件夹操作到listView上代码实现,以前在学校生活写的,就几句代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;us…

每日一笑 | 为什么男生追到一半就不追了?

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;

转:超越设计模

转&#xff1a;http://www.ibm.com/developerworks/cn/java/j-lo-beyondpattern/刘 旭进, 软件开发工程师, IBM 中国软件开发中心简介&#xff1a; 可复用面向对象软件的基础 -- 设计模式&#xff0c;以其可复用的设计初衷、精巧的逻辑思维被广大面向对象程序设计所追捧。但不少…

为什么中国天才都往美国跑,可美国人的数学那么槽糕

中国天才少年尹希&#xff0c;17岁时收到哈佛大学博士offer&#xff0c;31岁成为哈佛最年轻华人正教授。中国年轻科学家、未来科学大奖数学与计算机奖获得者许晨阳&#xff0c;于2018年加入美国麻省理工&#xff0c;选择去世界顶尖的地方看看。22岁中国“神童”曹原&#xff0c…

如何使用VIM的Help

很多时候在用到vim的命令的时候&#xff0c;都会去网上搜索&#xff0c;殊不知&#xff0c;如果熟练使用VIM的help&#xff0c;可以达到事半功倍的效果。 下面介绍如何使用VIM的help&#xff1a; 1. 在vim的一般模式中输入&#xff1a;help可以进入vim的help界面 这里面注…

可编程智能小车,100种玩法,从3岁玩到15岁,培养孩子“最强大脑”

▲数据汪特别推荐点击上图进入玩酷屋毫无疑问&#xff0c;数学、科学和计算机科学是解决21世纪现代问题的三大支柱。当现在各式各样的兴趣班和教育辅导班快要呈现饱和状态时&#xff0c;一种新兴的教育活动正如火如荼地进行着那就是少儿编程。少儿编程奇迹般的红火&#xff0c;…