事务处理

简介: 《基础系列》

1 Spring 事务处理的设计概览

Spring 事务处理模块的类层次结构如下图所示。

从上图可以看到,Spring 事务处理模块 是通过 AOP 功能 来实现声明式事务处理的,比如事务属性的配置和读取,事务对象的抽象等。因此,在 Spring 事务处理 中,可以通过设计一个 TransactionProxyFactoryBean 来使用 AOP 功能,通过这个 TransactionProxyFactoryBean 可以生成 Proxy 代理对象,在这个代理对象中,通过 TransactionInterceptor 来完成对代理方法的拦截,正是这些 AOP 的拦截功能,将事务处理的功能编织进来。

对于具体的事务处理实现,比如事务的生成、提交、回滚、挂起等,由于不同的底层数据库有不同的支持方式,因此,在 Spring 事务处理中,对主要的事务实现做了一个抽象和适配。适配的具体事务处理器包括:对 DataSource 数据源 的事务处理支持,对 Hibernate 数据源 的事务处理支持,对 JDO 数据源 的事务处理支持,对 JPA 和 JTA 等数据源的事务处理支持等。这一系列的事务处理支持,都是通过设计 PlatformTransactionManager、AbstractPlatformTransactionManager 以及一系列具体事务处理器来实现的,而 PlatformTransactionManager 又实现了 TransactionInterceptor 接口,通过这样一个接口实现设计,就把这一系列的事务处理的实现与前面提到的 TransactionProxyFactoryBean 结合起来,从而形成了一个 Spring 声明式事务处理 的设计体系。

2 Spring 事务处理 的应用场景

Spring 作为应用平台或框架的设计出发点是支持 POJO 的开发,这点在实现事务处理的时候也不例外。在 Spring 中,它既支持编程式事务管理方式,又支持声明式事务处理方式,在使用 Spring 处理事务的时候,声明式事务处理通常比编程式事务管理更方便些。

Spring 对应用的支持,一方面,通过声明式事务处理,将事务处理的过程和业务代码分离出来。这种声明方式实际上是通过 AOP 的方式来完成的。显然,Spring 已经把那些通用的事务处理过程抽象出来,并通过 AOP 的方式进行封装,然后用声明式的使用方式交付给客户使用。这样,应用程序可以更简单地管理事务,并且只需要关注事务的处理策略。另一方面,应用在选择数据源时可能会采取不同的方案,当以 Spring 作为平台时,Spring 在应用和具体的数据源之间,搭建一个中间平台,通过这个中间平台,解耦应用和具体数据源之间的绑定,并且,Spring 为常用的数据源的事务处理支持提供了一系列的 TransactionManager。这些 Spring 封装好的 TransactionManager 为应用提供了很大的方便,因为在这些具体事务处理过程中,已经根据底层的实现,封装好了事务处理的设置以及与特定数据源相关的特定事务处理过程,这样应用在使用不同的数据源时,可以做到事务处理的即开即用。这样的另一个好处是,如果应用有其他的数据源事务处理需要, Spring 也提供了一种一致的方式。这种 有机的事务过程抽象 和 具体的事务处理 相结合的设计,是我们在日常的开发中非常需要模仿学习的。

相关文章
|
SQL 存储 关系型数据库
数据库事务——事务的特性(ACID)
数据库事务——事务的特性(ACID)
212 0
|
4月前
|
SQL 数据库 开发者
SQL事务处理与并发控制:保障数据一致性的关键——深入探索ACID原则、锁定与乐观并发控制策略,以及高级事务管理技巧
【8月更文挑战第31天】在数据库管理和应用开发中,确保数据一致性至关重要。SQL事务处理和并发控制是实现这一目标的关键技术,它们保证了多用户同时访问和修改数据时数据库的一致性和准确性。事务处理遵循ACID原则(原子性、一致性、隔离性和持久性),并发控制则通过锁定和乐观并发控制等策略管理多用户访问,防止数据冲突。本文将深入探讨这些技术的原理与应用,帮助开发者更好地保护数据。
73 0
|
5月前
|
消息中间件 中间件 数据库
中间件事务处理
【7月更文挑战第15天】
50 4
|
5月前
|
分布式计算 数据库
现代数据库系统的并发控制与事务管理
数据库系统的并发控制与事务管理是保障数据一致性和并发访问效率的核心技术。本文深入探讨了现代数据库系统中常见的并发控制方法和事务管理机制,包括乐观并发控制和悲观并发控制,以及ACID特性的实现和应用。通过对比分析不同方法的优缺点,展示了在不同应用场景下如何选择合适的并发控制策略和事务管理方式,以达到最优的数据库性能和数据一致性。
|
7月前
|
存储 关系型数据库 数据库
事务处理
事务处理
61 1
|
关系型数据库 MySQL Java
多数据源事务处理-涉及分布式事务
多数据源事务处理-涉及分布式事务
166 0
|
存储 SQL Oracle
事务的ACID特性
本篇文章主要介绍事务机制: 1. 对事务进行控制 2. 事务的ACID特性
248 0
|
SQL 关系型数据库 Java
数据库事务的ACID特性:
数据库事务的ACID特性:
177 0
数据库事务的ACID特性:
|
存储 监控 关系型数据库
myrocks之事务处理
--- title: MySQL · myrocks · myrocks之事务处理 author: 张远 --- # 前言 mysql目前支持的事务引擎有innodb,tokudb. rocksdb加入mysql阵营后,mysql支持的事务引擎增长至3个。 myrocks目前支持的事
3079 0
|
缓存 搜索推荐 算法