Spring-6-事务管理

news2025/1/23 7:15:06

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

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

在典型的数据库更新操作中,首先数据库事务开始,然后数据被更新,最后提交或回滚事务(根据数据库操作的结果而定)。但是,在很多情况下,由于应用程序需求以及应用程序需要与之交互的后端资源(如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.coloradmin.cn/o/1344100.html

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

相关文章

【目标检测】yolov8结构及代码分析

yolov8代码:https://github.com/ultralytics/ultralytics yolov8的整体结构如下图(来自mmyolo): yolov8的配置文件: # Ultralytics YOLO 🚀, AGPL-3.0 license # YOLOv8 object detection model with P3-P5 outputs.…

main参数传递、反汇编、汇编混合编程

week03 一、main参数传递二、反汇编三、汇编混合编程 一、main参数传递 参考 http://www.cnblogs.com/rocedu/p/6766748.html#SECCLA 在Linux下完成“求命令行传入整数参数的和” 注意C中main: int main(int argc, char *argv[]), 字符串“12” 转为12,可以调用atoi…

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)

1、宽字节注入 sqllabs-less-32为例 使用单引号进行测试 提示我们输入的单引号被转义符 \ 进行了转义,即转义符自动的出现在输入的特殊字符前面,这是防止sql注入的一种方法,导致无法产生报错。 这种情况我们就可以尝试宽字节注入&#xff…

R503S指纹识别模块的指令系统(二)

18 获取随机数 GetRandomCode(0x14) 功能说明:令模块生成一个随机数返回给上位机 输入参数:无 返回参数:确认码 RandomCode(随机数) 指令代码:0x14 确认码0x00 表示获取成功&…

YOLOv8改进 | 主干篇 | EfficientNetV1均衡缩放网络改进特征提取层

一、本文介绍 这次给大家带来的改进机制是EfficientNetV1主干,用其替换我们YOLOv8的特征提取网络,其主要思想是通过均衡地缩放网络的深度、宽度和分辨率,以提高卷积神经网络的性能。这种方法采用了一个简单但有效的复合系数,统一…

68.乐理基础-打拍子-大附点与变体

上一节内容:66.乐理基础-打拍子-小切分-CSDN博客,只所以没有67因为67可以不用知道,67节内容在:※-打拍子(8)-一拍内的变体1-乐理教程-腾讯课堂 (qq.com) 大附点:大附点这个名字不是通用的&…

通过AWS Endpoints从内网访问S3

AWS S3作为非结构化数据的存储,经常会有内网中的app调用的需求。S3默认是走公网访问的,如果内网app通过公网地址访问S3并获取数据会消耗公网带宽费用。如下图所示: AWS 提供了一种叫做endpoints的资源,这种资源可以后挂S3服务&a…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的固定帧率(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的固定帧率(C#) Baumer工业相机Baumer工业相机的固定帧率功能的技术背景CameraExplorer如何查看相机固定帧率功能在NEOAPI SDK里通过函数设置相机固定帧率 Baumer工业相机通过NEOAPI SDK设置相机固…

TSR勾画学习

1:勾画建议 文献:Scoring the tumor-stroma ratio in colon cancer: procedure and recommendations 主要讲述的是结肠癌(CRC)的勾画建议和流程。 1,切片选择建议: 原发肿瘤的载玻片最具侵袭性的部分(即常规病理学…

golang 图片加水印,字体文件从哪里找

鼠标左键双击此电脑图标在此电脑文本框输入电脑默认字体地址:C:\Windows\Fonts找到需要用到的字体文件,复制到指定文件夹

jQuery-Validate验证插件的使用步骤【详解】

jQuery-Validate验证插件的使用步骤详解 1. 写在前面2. 效果展示3. Validate环境的搭建4. Validate基本方法的使用5. 实现错误消息的本地化6. 实现远程验证7. 自定义验证方法8. 验证表单完整版8.1 Html表单8.2 表单验证js逻辑8.3 表单验证css样式 1. 写在前面 我们知道&#x…

如何编译代码,把RustDesk主页面背景白色改成自己想要的图片

环境: RustDesk1.1.9自建服务器 问题描述: 如何编译代码,把RustDesk主页面背景白色改成自己想要的图片 解决方案: 详细方案,有需要私聊

鸿蒙OS应用开发之气泡提示

前面学习了弹窗提示,其实有时候只是想在旁边做一些说明,那么采用弹窗的方式就比较麻烦一些,这时可以采用系统里面的气泡提示方式。 系统也提供了几种方式弹出气泡提示,最简单的一种是采用bindPopup属性。它的定义如下: 在后面的参数设置里,也是比较复杂的形式。我们先来演…

Live800:客户体验策略是什么?企业如何制定客户体验策略?

客户体验策略是企业为了提升顾客对产品或服务的感知和满意度而采取的一系列措施和方法。它关注的是如何创造一个积极、愉悦和有价值的购买过程,从而建立长期的客户关系和忠诚度。客户体验策略是企业成功的关键之一,因为它能够帮助企业在竞争激烈的市场中…

【yolofastest上手】

一、前言 yolofastest网上资料比较少,也没有视频教学,所以想要使用参考了很多资料,只能说各资料都不尽全,让刚接触的小白无从下手。 参考资料: github地址 yolo-fastest 快速上手 修改参数遇到的问题 能在ARM-CPU上实时识别图像的…

Halcon颜色通道的处理decompose3/image_to_channels/channels _to _image

Halcon颜色通道的处理 文章目录 Halcon颜色通道的处理一. 图像的通道二. 访问通道1.访问通道2.获取通道的数量 三. 通道分离与合并1. decompose3算子2. image_to_channels 算子3. compose3算子4. channels_to_image算子 四. 处理RGB信息 由于彩色图像通常包含不止一个通道&…

广播信道的局域网

目录 一. 局域网的数据链路层二. 广播信道局域网三. 以太网标准四. CSMA/CD协议五. 以太网最短的帧六. 冲突解决方法-―退避算法 \quad 一. 局域网的数据链路层 \quad 局域网的特点 \quad 局域网的拓扑结构 \quad 局域网传输媒体 \quad \quad 媒体共享技术 \quad 二. 广播信道…

【前端面经】即时设计

目录 前言一面git 常见命令跨窗口通信vue 响应式原理发布订阅模式翻转二叉树Promise.all()扁平化数组面试官建议 二面Event Loop 原理Promise 相关css 描边方式requestAnimationReact 18 新特性JSX 相关react 输出两次函数式编程React 批处理机制http请求头有哪些本地存储性能优…

交叉编译aarch64架构支持openssl的curl、libcurl

本文档旨在指导读者在x86_64平台上交叉编译curl和openssl库以支持aarch64架构。在开始之前,请确保您的系统环境已正确配置。 1. 系统环境准备 系统是基于Ubuntu 20.04 LTS,高版本可能会有问题。首页,安装必要的开发工具和库文件。打开终端并…

[足式机器人]Part4 南科大高等机器人控制课 CH12 Robotic Motion Control

本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 南科大高等机器人控制课 Ch12 Robotic …