Spring事务整理篇

看到一篇写得比较好的文章,比较连贯、深入。有逻辑的东西才是好东西。

https://www.jianshu.com/p/00b46f2f397c

 


主要讲述:

  • 什么是事务、事务的目的;
  1. 展开讲述ACID属性(原子性、一致性、隔离性、持久性);
  2. 然后讲述其中的例子和常见的问题;如隔离性中的隔离等级,以及不同隔离等级下的不同问题(脏读、幻读、不可重复读取等)。
  • java事务处理与数据访问技术的关系;
  1. 基本关系。事务处理操作会随着数据访问技术的不同而各异。我们不是使用专用的事务API来管理事务,而是通过当前数据访问技术提供的基于connection的API来管理事务;即: 使用数据访问技术的API来进行事务处理。常见的数据访问技术?JDBC、Hibernate等;
  2. 这种基本关系下的问题。
  • 各种数据访问方式只提供了简单的事务API,但没有更高层次的抽象来帮助我们隔离事务与数据访问的过紧耦合。
  • 事务处理过程中的异常应该都是不可恢复的,所以应该抛出unchecked exception,并且有一个统一的父类便于客户端处理。但现在没有一个统一的事务相关异常体系,我们需要捕捉特定API异常并处理。
  • 对于开发人员,所谓事务的管理,最多也就是界定一下事务的边界,规定什么时候开始,什么时候结束。但没有一个统一的方式对事务进行管理。
  • Spring事务架构
  1. 其基本原则。事务管理的关注点与数据访问的关注点相分离。
  • Spring事务接口

如图所示:

Spring事务整理篇

  1. 介绍这三个事务接口的功能

 

Spring事务抽象一共有3个主要接口,他们都在org.springframework.transaction包下。

  • PlatformTransactionManager是Spring事务框架的核心接口,它为应用程序提供事务边界的统一方式,它根据TransactionDefinition的定义来开启相关事务。
  • TransactionDefinition负责定义事务相关属性,包括隔离级别、传播行为等。
  • 事务开启期间的事务状态由TransactionStatus负责,也可以通过TransactionStatus对事务进行有限的控制。

接下来,就是详细的接口介绍了。

限于篇幅,关于事务管理的三个主要接口的介绍另起文章。