Spring学习笔记_30——事务接口PlatformTransactionManager

PlatformTransactionManager是Spring框架中事务管理的核心接口,它负责管理事务的创建、提交和回滚等操作。

源码

/** Copyright 2002-2020 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      https://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package org.springframework.transaction;import org.springframework.lang.Nullable;
public interface PlatformTransactionManager extends TransactionManager {// 用于获取一个新的事务或者加入一个现有的事务。// 该方法接受一个TransactionDefinition对象作为参数,该对象包含了事务的各种属性,如隔离级别、传播行为等。TransactionStatus getTransaction(@Nullable TransactionDefinition definition)throws TransactionException;// 用于提交一个事务。// 该方法接受一个TransactionStatus对象作为参数,表示需要提交的事务的状态。void commit(TransactionStatus status) throws TransactionException;// 用于回滚一个事务。// 该方法同样接受一个TransactionStatus对象作为参数,表示需要回滚的事务的状态。void rollback(TransactionStatus status) throws TransactionException;}

Spring框架提供了多种PlatformTransactionManager的实现类,用于支持不同的事务管理机制,如JDBC、JPA、Hibernate等。开发者可以根据具体的应用场景,选择合适的PlatformTransactionManager实现类。

实现类

  • DataSourceTransactionManager: 适用于单个 JDBC 数据源的事务管理。
  • JpaTransactionManager: 针对 JPA(Java Persistence API)的事务管理。
  • HibernateTransactionManager: 用于 Hibernate 的事务管理。
  • JtaTransactionManager: 支持分布式事务,即跨多个资源或服务的事务管理。

使用场景

  • 声明式事务管理:通过 AOP(面向切面编程)技术,Spring 可以在方法调用前后自动管理事务的开始、提交和回滚。这通常通过 <tx:annotation-driven /> 或者 @Transactional 注解来配置。
  • 编程式事务管理:在代码中直接使用 PlatformTransactionManager 接口的方法来手动控制事务的生命周期。这种方式更加灵活,但代码量相对较多,且可能降低代码的可读性和可维护性。

补充

DataSourceTransactionManager

DataSourceTransactionManager 是 Spring 框架中用于管理 JDBC 数据源事务的核心类。它通过实现 PlatformTransactionManager 接口,提供了事务的开始、提交和回滚功能。通过配置和使用 DataSourceTransactionManager,开发者可以轻松地在应用程序中实现可靠的事务管理,确保数据的一致性和完整性。

作用

  • 事务管理:
    • DataSourceTransactionManager 负责管理与特定数据源相关的事务。它能够开始、提交和回滚事务,确保数据库操作的原子性、一致性、隔离性和持久性(ACID 特性)。
  • 数据源绑定:
    • 它与一个特定的 DataSource 关联,通常是在 Spring 配置文件中指定的。这样,所有的事务操作都会针对这个数据源进行。
  • 集成其他组件:
    • DataSourceTransactionManager 可以与其他 Spring 组件(如 JdbcTemplateNamedParameterJdbcTemplate)无缝集成,提供一致的事务管理体验。
JpaTransactionManager

JpaTransactionManager 是 Spring 框架中用于管理 JPA (Java Persistence API)事务的核心类。它通过实现 PlatformTransactionManager 接口,提供了事务的开始、提交和回滚功能。通过配置和使用 JpaTransactionManager,开发者可以轻松地在应用程序中实现可靠的事务管理,确保数据的一致性和完整性。这对于使用 JPA 进行数据持久化的应用来说是非常重要的。

作用

  • 事务管理:
    • JpaTransactionManager 负责管理与特定 JPA 实体管理器工厂(EntityManagerFactory)相关的事务。它能够开始、提交和回滚事务,确保数据库操作的原子性、一致性、隔离性和持久性(ACID 特性)。
  • 实体管理器管理:
    • 它与一个特定的 EntityManagerFactory 关联,通常是在 Spring 配置文件中指定的。这样,所有的事务操作都会针对这个 EntityManagerFactory 进行。
  • 集成其他组件:
    • JpaTransactionManager 可以与其他 Spring 组件(如 JpaRepositoryEntityManager)无缝集成,提供一致的事务管理体验。
JtaTransactionManager

JtaTransactionManager 是 Spring 框架中用于管理分布式事务(JTA,Java Transaction API)的一个重要类。它是 PlatformTransactionManager 接口的具体实现之一,专门用于处理涉及多个资源(如多个数据库、消息队列等)的事务管理。下面详细介绍 JtaTransactionManager 的作用、配置和使用方法。

作用

  • 分布式事务管理:
    • JtaTransactionManager 能够管理跨多个资源的事务,确保这些资源的操作在事务中保持一致。这在分布式系统中尤为重要,例如需要同时更新两个不同数据库中的数据,或者需要协调数据库和消息队列的操作。
  • 事务协调:
    • 它使用 JTA 规范来协调事务,通过 UserTransactionTransactionManager 接口与事务管理器(如应用服务器提供的事务管理器)进行交互。
  • 集成其他组件:
    • JtaTransactionManager 可以与其他 Spring 组件(如 JdbcTemplateJpaTemplateJmsTemplate 等)无缝集成,提供一致的事务管理体验。
HibernateTransactionManager

HibernateTransactionManager 是 Spring 框架中用于管理 Hibernate 事务的一个重要类。它是 PlatformTransactionManager 接口的具体实现之一,专门用于处理基于 Hibernate 的事务管理。下面详细介绍 HibernateTransactionManager 的作用、配置和使用方法。

作用

  • 事务管理:
    • HibernateTransactionManager 负责管理与特定 SessionFactory 相关的事务。它能够开始、提交和回滚事务,确保数据库操作的原子性、一致性、隔离性和持久性(ACID 特性)。
  • Session 管理:
    • 它与一个特定的 SessionFactory 关联,通常是在 Spring 配置文件中指定的。这样,所有的事务操作都会针对这个 SessionFactory 进行。
  • 集成其他组件:
    • HibernateTransactionManager 可以与其他 Spring 组件(如 HibernateTemplateSession)无缝集成,提供一致的事务管理体验。

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

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

相关文章

力扣 LeetCode 203. 移除链表元素(Day2:链表)

解题思路&#xff1a; 方法一&#xff1a;头节点和非头节点分开处理 方法二&#xff1a;定义一个dummy虚拟节点&#xff0c;后面的节点就可以采用相同的处理方式 注意&#xff1a; cur需要指向要删除的节点的上一个节点&#xff0c;因为要越过这一个被删除的节点 class Sol…

IEC60870-5-104 协议源码架构详细分析

IEC60870-5-104 协议源码架构 前言一、资源三、目录层级一二、目录层级二config/lib60870_config.hdependencies/READMEexamplesCMakeLists.txtcs101_master_balancedcs104_client_asyncmulti_client_servertls_clienttls_server说明 make这些文件的作用是否需要导入这些文件&a…

turbo c 2.0 画螺栓

代码; #include<graphics.h> void bolt(x0,y0,d,l) int x0,y0,d,l; {int x1,x2,x3,x4,x5,x6,x7,x8;int y1,y2,y3,y4,y5,r1,r2,b,c;if(l>2*d) b2*d;else b1;r11.5*d;r20.38*d;c0.1*d;x1x0-0.7*d;x2x0-0.61*d;x3x0-0.32*d;x4x00.8*d;x5x0l-b;x6x0l-c;x7x0l-0.05*d;x8x0…

网络服务综合项目-博客

一、运行环境&#xff1a; 主机主机名系统服务192.168.31.128Server-WebLinuxWeb192.168.31.129Server-NFS-DNSLinuxNFS 二、基础配置&#xff1a; 配置主机名开启防火墙并配置部分开启selinux并配置服务器之间使用ntp.aliyun.com进行时间同步服务器之间实现ssh免密登录 三…

leetcode86:分隔链表

给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a;head [1,4,3,2,5,2], x 3 输出&am…

Android Mobile Network Settings | APN 菜单加载异常

问题 从log看是有创建APN对应的Controller&#xff08;功能逻辑是ok的&#xff09;&#xff0c;但是Mobile Network Settings无法显示&#xff08;UI异常&#xff09;。 日志分析 看似APN 菜单已经创建了&#xff0c;实际上并没有显示。 11-12 07:01:28.150 8773 8773 D Pr…

上海市计算机学会竞赛平台2020年4月月赛丙组永恒的生命游戏

题目背景 2020年4月11日&#xff0c;英国数学家 约翰霍顿康威&#xff08;John Horton Conway&#xff09;因为新型冠状病毒肺炎不幸逝世。他在群论、数论、代数、几何拓扑、理论物理、组合博弈论和几何等领域&#xff0c;都做出了重大贡献。他的离去是人类文明的损失。他最著…

FS8x 功能安全

fail-safe是电独立的和物理隔离的。fail-safe由自己的参考电压和电流提供,有自己的振荡器,有重复的模拟路径以最小化常见的故障,并有LBIST/ABIST来覆盖潜在故障。fail-safe根据设备部件号提供ASIL B或ASIL D遵从性。除非另有规定,fail-safe定时来自故障安全振荡器,其精度为…

项目模块十七:HttpServer模块

一、项目模块设计思路 目的&#xff1a;实现HTTP服务器搭建 思想&#xff1a;设计请求路由表&#xff0c;记录请求方法与对应业务的处理函数映射关系。用户实现请求方法和处理函数添加到路由表&#xff0c;服务器只接受请求并调用用户的处理函数即可。 处理流程&#xff1a; …

内网域环境、工作组、局域网等探针方案

1. 信息收集 1.1 网络收集 了解当前服务器的计算机基本信息&#xff0c;为后续判断服务器角色&#xff0c;网络环境做准备 systeminfo 详细信息 net start 启动服务 tasklist 进程列表 schtasks 计划任务&#xff08;受权限影响&#xff09; 了解当前服务器的网络接口信息…

什么是量化交易

课程大纲 内容初级初识量化&#xff0c;理解量化 初识量化 传统量化和AI量化的区别 量化思想挖掘 量化思想的挖掘及积累技巧 量化代码基础&#xff1a; python、pandas、SQL基础语法 金融数据分析 常用金融分析方式 常用因子分析方式 数据分析实战练习 回测及交易引擎 交易引擎…

OpenHarmony-1.启动流程

OpenHarmony启动流程 1.kernel的启动 流程图如下所示&#xff1a;   OpenHarmony(简称OH)的标准系统的底层系统是linux&#xff0c;所以调用如下代码&#xff1a; linux-5.10/init/main.c: noinline void __ref rest_init(void) {struct task_struct *tsk;int pid;rcu_sch…

【LeetCode】【算法】64. 最小路径和

LeetCode 64. 最小路径和 题目描述 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 思路 思路&#xff1a;这种题太典了&#xff0c;典…

1.7 JS性能优化

从输入url到页面加载完成都做了些什么 输入 URL - 资源定位符 http://www.zhaowa.com - http 协议 追问&#xff1a;http 与 TCP 1. http - 应用层 < > TCP - 传输层 2. 关联 - http基于TCP实现连接 < > UDP > 握手 & 挥手 &#xff08;传输速率上较…

Spring Task详细讲解

✨Spring Task简介 Spring Task 是 Spring 提供的轻量级定时任务工具&#xff0c;也就意味着不需要再添加第三方依赖了&#xff0c;相比其他第三方类库更加方便易用。可以按照约定的时间自动执行某个代码逻辑。 使用场景&#xff1a; 信用卡每月还款提醒银行贷款每月还款提醒…

Qt/C++ 海康SDK开发示例Demo

*** 工业相机在机器视觉中起到关键作用&#xff0c;本文基于海康 SDK 详细解读了设备连接与控制的各个步骤。内容涵盖设备枚举、句柄创建、图像采集回调以及设备异常处理&#xff0c;帮助开发者快速理解如何通过代码控制相机&#xff0c;实时采集并处理图像数据。*** 1. 搜索并…

HDLBIts习题(5):移位寄存器

&#xff08;1&#xff09;易错习题1&#xff1a;109题&#xff08;shift18&#xff09; 对算数左移和算数右移概念不清&#xff0c;不知道该如何计算。 逻辑左移和算术左移之间没有区别。&#xff08;无论是有符号位数据还是无符号位数据&#xff0c;右侧补0&#xff09; 逻辑…

想要成为独立游戏作者 :通关!游戏设计之道 2-2 关卡设计

本文通过ai辅助总结加个人微调,不喜勿喷 前篇如下&#xff1a; 想要成为独立游戏作者 &#xff1a;通关&#xff01;游戏设计之道 2-1 HUD-CSDN博客 1.关卡的多重定义 在电子游戏行业里 “关卡” 有多种含义&#xff0c;如游戏行为发生的环境、分割的游戏体验单元、量…

【深圳大学】数据结构A+攻略(计软版)

1. 考试 1.1 形式 分为平时&#xff0c;笔试&#xff0c;机试三部分。其中&#xff1a; 平时占30%&#xff0c;包含平时OJ测验和课堂练习&#xff0c;注意这个可能会因老师的不同和课题组的新策略而改变。笔试占60%&#xff0c;是分值占比的主要部分。机试占10%。 1.2 题型…

Springboot 启动端口占用如何解决

Springboot 启动端口占用如何解决 1、报错信息如下 *************************** APPLICATION FAILED TO START ***************************Description:Web server failed to start. Port 9010 was already in use.Action:Identify and stop the process thats listening o…