Spring-6-事务管理

事务是构建可靠企业级应用程序的最关键部分之一。

最常见的事务类型是数据库操作。

在典型的数据库更新操作中,首先数据库事务开始,然后数据被更新,最后提交或回滚事务(根据数据库操作的结果而定)。但是,在很多情况下,由于应用程序需求以及应用程序需要与之交互的后端资源(如RDBMS、面向消息的中间件、ERP系统等)的不同,事务管理可能更加复杂。

Spring支持声明式和编程式事务管理。
Spring声明性事务提供极好的支持,这意味着不需要将事务管理代码和业务逻辑混淆起来。

所要做的就是声明必须参与事务的相关方法(在类或层中)以及事务配置的细节,Spring将负责处理事务管理。

  • Spring事务抽象层:讨论Spring事务抽象类的基本组件,并解释如何使用这些类来控制事务的属性。
  • 声明式事务管理:演示如何使用Spring和简单的Java对象来实现声明式事务管理,提供使用XML配置文件以及Java注解的声明式事务管理示例。
  • 编程式事务管理:尽管编程式事务管理并不经常使用,但本章还是介绍了如何使用Spring提供的TransactionTemplate类,它可以让开发人员完全控制事务管理代码。
  • 使用JTA实现全局事务:对于需要跨越多个后端资源的全局事务,演示如何使用JTA在Spring中配置和实现全局事务。

事务类型

本地事务易于管理,如果应用程序中的所有操作都需要与一个事务资源(如JDBC连接)进行交互,那么使用本地事务就足够了。

但是,如果没有使用像Spring这样的应用程序框架,则需要编写大量的事务管理代码,并且如果将来事务的范围需要扩展到跨多个事务资源,就必须删除本地事务管理代码并重新编写代码,以便使用全局事务。

在Java世界中,全局事务是通过JTA实施的。

在这种情况下,与JTA兼容的事务管理器通过各自的资源管理器连接到多个事务资源,而这些资源管理器能够通过XA协议(一种定义了分布式事务的开放标准)与事务管理器进行通信,并使用2 Phase Commit(2PC)机制来确保所有后端数据源被更新或完全回滚。

如果任意后端资源失败,则整个事务将回滚,因此对其他资源的更新也会回滚。

在这里插入图片描述

隔离级别

在这里插入图片描述

传播类型

在这里插入图片描述

TransactionStatus接口

下面所示的TransactionStatus接口允许事务管理器控制事务的执行。这些代码可以检查事务是新事务还是只读事务,并且可以启动回滚。

在这里插入图片描述TransactionStatus接口中的方法非常容易理解;最值得注意的是setRollbackOnly()方法,它会导致回滚并结束活动事务。

hasSavePoint()方法指示事务内部是否携带保存点(也就是说,事务是基于保存点而创建的嵌套事务)。

如果可用(例如,与Hibermate一起使用时),flush()方法会将底层会话存储到数据存储区。

isCompleted()方法指示事务是否结束。

@Transactional注解的属性

在这里插入图片描述

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

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

相关文章

java中的缓冲类HeapByteBuffer和DirectByteBuffer的区别

使用之前写的文章里的例子 https://blog.csdn.net/zlpzlpzyd/article/details/135292683 HeapByteBuffer import java.io.File; import java.io.FileInputStream; import java.io.Serializable; import java.nio.ByteBuffer; import java.nio.channels.FileChannel;public clas…

【hcie-cloud】【12】华为云Stack故障处理【故障处理通用处理原则、常见华为云Stack故障处理(计算域故障场景)】【上】

文章目录 前言故障处理通用处理原则故障处理流程故障信息收集及故障范围、类型识别ManageOne运维面收集告警信息AutoOps工具故障场景信息收集AutoOps工具自动化采集HCS信息 (1)AutoOps工具自动化采集HCS信息 (2)故障初期定位方向故障恢复例行维护讨论: 哪一环比较重要&#xff…

关于表格太大了jupyter无法单次处理的问题

记录下自己的心路历程…耗时耗精力 我用的数据库单个表格就很大,一个表格有30多G,jupyter无法处理这么大的表格,会直接把电脑的进程全部结束掉,结束掉要是能运行成功倒也行啊,然鹅…给我报错说处理不了,罢工…

【SpringCloud】从实际业务问题出发去分析Eureka-Server端源码

文章目录 前言1.EnableEurekaServer2.初始化缓存3.jersey应用程序构建3.1注册jeseryFilter3.2构建JerseyApplication 4.处理注册请求5.registry() 前言 前段时间遇到了一个业务问题就是k8s滚动发布Eureka微服务的过程中接口会有很多告警,当时…

next.js 开发网站的hello world

本文介绍建立一个简单的next.js 工程,以及简单修改。然后也简单说了2种路由方式的选择。 开始next.js工程前需要node.js , 还需要编辑器,我这里选择的是visual code。如果没有安装node.js 请参考下: visual code 下的node.js的he…

PathWave Device Modeling (IC-CAP) 建模系统——IC-CAP概述

建模系统 PathWave Device Modeling(IC-CAP)建模系统用于测量半导体器件并分析器件的电路建模特性以及分析所得数据。 要使用PathWave Device Modeling(IC-CAP),您需要以下设置: 一台工作站执行直流、电…

今年近三万人报考北大研究生,最高学费80多万!

全国硕士研究生招生考试已经接近尾声,今年总共有近3万名考生报考北京大学硕士研究生。而北大计划招生的研究生是7349人,按这个比例计算的话相当于4:1,也就是平均 4 个人当中会有一个人被录取,我感觉这比高考容易多了。 2023年北大…

基于ElementUI二次封装el-table与el-pagination分页组件[实际项目使用]

效果&#xff1a; 二次封装el-table组件 <template><div><!-- showHeader:是否显示头部size:表格的大小height:表格的高度isStripe:表格是否为斑马纹类型tableData:表格数据源isBorder:是否表格边框handleSelectionChange:行选中&#xff0c;多选内容发生变化回…

Zama TFHE-rs白皮书(2)

前序博客有&#xff1a; 基于[Discretized] Torus的全同态加密指引&#xff08;1&#xff09;基于[Discretized] Torus的全同态加密指引&#xff08;2&#xff09;TFHE——基于[Discretized] Torus的全同态加密 代码解析Zama TFHE-rsZama TFHE-rs白皮书&#xff08;1&#xff…

推荐系统/电商中的 业务指标GMV

GMV&#xff08;Gross Merchandise Volume&#xff09;是指在一定时间内&#xff0c;一个电商平台上所有商品的总销售价值&#xff0c;通常以货币单位&#xff08;例如美元、人民币等&#xff09;表示。GMV是一个关键的电商业务指标&#xff0c;用于衡量平台的交易规模和业务增…

Linux:apache优化(5)—— 隐藏版本号

防盗链&#xff1a;就是防止别人盗取你们公司的图片、文件、视频 作用&#xff1a;防盗链就是防止别人盗用服务器中的图片、文件、视频等相关资源。运维人员可以通过apache提供rewrite模块进行优化。 配置项&#xff1a; RewriteEngine ON ##打开网页重写功能 RewriteCond …

修改源码,element的el-table合并,处理合并产生的hover样式问题

1、确认自己element-ui的版本号 2、此element-ui下的lib包是修改过hover样式的包,如何替换自己文件下的node_modules中的包 修改后将lib文件夹中文件替换你项目中/node_module/element-ui/Lib中的文件问题??如果替换开发环境中的node_module的包无法升级到测试环境,因为nod…

联合办公靠谱吗?

提起联合办公&#xff0c;许多人可能会想到喧嚣的开放式办公区、精巧的咖啡吧台以及随处可见的共享会议室。随着工作模式的更新迭代&#xff0c;联合办公无疑已经成为了现代办公室文化的热门趋势。但面对这种浪潮&#xff0c;不少人仍然保持着观望的态度&#xff0c;不免产生疑…

无表情包不MEME,PADD 最具潜力的BRC20 meme

BRC20 出圈&#xff0c;PADD 埋伏正当时 近期&#xff0c;市场向好&#xff0c;BRC20 在一定程度上推动了牛市的进程&#xff0c;基于BRC20的生态正在蓬勃发展&#xff0c;meme coin 已经成为生态中不可或缺的一部分&#xff01; 投资 meme coin 要的是以小博大&#xff0c;sat…

0x45 点分治

0x45 点分治 到目前为止&#xff0c;我们用数据结构处理的大多是序列上的问题。这些问题的形式一般是给定序列中的两个位置 l l l和 r r r&#xff0c;在区间 [ l , r ] [l,r] [l,r]上执行查询或修改指令。如果给定一棵树&#xff0c;以及树上两个节点 x x x和 y y y&#xff…

jQuery日历签到插件下载

jQuery日历签到插件下载-遇见你与你分享

记一次JSF异步调用引起的接口可用率降低 | 京东云技术团队

前言 本文记录了由于JSF异步调用超时引起的接口可用率降低问题的排查过程&#xff0c;主要介绍了排查思路和JSF异步调用的流程&#xff0c;希望可以帮助大家了解JSF的异步调用原理以及提供一些问题排查思路。本文分析的JSF源码是基于JSF 1,7.5-HOTFIX-T6版本。 起因 问题背景…

【Java】SpringBoot快速整合WebSocket实现客户端服务端相互推送信息

目录 什么是webSocket&#xff1f; webSocket可以用来做什么? WebSocket操作类 一&#xff1a;测试客户端向服务端推送消息 1.启动SpringBoot项目 2.打开网站 3.进行测试消息推送 4.后端进行查看测试结果 二&#xff1a;测试服务端向客户端推送消息 1.接口代码 2.使…

04-获取认证的用户身份信息

存储用户信息的方式 获取用户信息的流程 用户提交账号和密码后,DaoAuthenticationProvider调用UserDetailsService接口实现类的loadUserByUsername()方法,该方法可以接收请求参数username的值,然后根据该值查询用户信息,最后将账号,密码,权限封装到UserDetails对象中并返回给…

HW01—SY系列单点测厚仪 应用于轧钢橡胶、金属、塑料…

关键字&#xff1a;单点测厚仪,HW01—SY测厚仪,常温测厚仪,热轧板测厚仪,非接触测厚仪,橡胶测厚仪,塑料板测厚仪,木板测厚仪, 产品简介&#xff1a; 该系列测厚仪整体采用C型架结构&#xff0c;C型架上安装上下两个对射的激光位移传感器&#xff0c;可测量一个点的厚度尺寸。C型…