首页 > 其他分享 >Spring学习笔记_30——事务接口PlatformTransactionManager

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

时间:2024-11-11 15:18:23浏览次数:7  
标签:事务管理 事务 License 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)无缝集成,提供一致的事务管理体验。

标签:事务管理,事务,License,Spring,30,回滚,PlatformTransactionManager
From: https://blog.csdn.net/LuckyLay/article/details/143677609

相关文章

  • 【就业反馈】2401期GIS开发特训营最高薪资13000元,人均1.4个offer
    总有人问想学GIS开发零基础能学会吗?学完真的能推荐就业吗?当然啦!!!新中地2401期GIS开发特训营毕业学员,就业反馈来啦!2401期GIS开发特训营,24年6月21日结业2401期就业数据反馈2401期就业数据反馈2401期班就业反馈图在新中地GIS开发特训营,很多人几乎都是从零......
  • 《Spring Boot 应用开发技术文档分享》
    一、引言在当今的软件开发领域,快速、高效地构建企业级应用是开发者们追求的目标。SpringBoot作为一款强大的Java开发框架,以其简洁的配置、快速的开发速度和强大的功能,受到了广大开发者的青睐。本文将详细介绍SpringBoot的特点、优势以及在应用开发中的实际使用方法。......
  • 基于springboot+vue.js+uniapp小程序的企业资产管理系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 基于springboot+vue.js+uniapp小程序的华强北商城二手手机管理系统附带文章源码部署视
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 基于springboot+vue.js+uniapp小程序的汽车资讯网站附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SpringBoot前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • SpringBoot集成SpringSecurity并实现自定义认证
    目录一、SpringSecurity简介二、集成SpringSecurity1、引入依赖2、编写核心配置类3、数据库建表4、自定义session失效策略5、自定义认证6、重写loadUserByUsername方法7、登录页面和接口三、总结一、SpringSecurity简介SpringSecurity是一个能够为基于Spring的企......
  • 【9691】基于springboot+vue的地方美食分享网站
    作者主页:Java码库主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。收藏点赞不迷路 关注作者有好处文末获取免费源码项目描述困扰管理层的许多问题当中,地方美食分享管理一定是美食界不敢忽视的一块。......
  • springboot 校园设施报修管理系统-毕业设计源码33917
    摘 要随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,校园设施报修管理通过网络进行信息管理掀起了热潮,所以针校园设施报修管理的......
  • 基于Springboot+Vue的毕业生就业推荐系统 (含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能这个系......
  • SpringBoot小区防疫健康信息管理及出入登记平台mfh93 带论文文档1万字以上
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:普通管理员,住户,小区公告,健康信息,返乡申请,出入申请,特殊事件开题报告内容一、研究背景随着全球公共卫生事件的频发,小区作为城市居民的基本生活单......