JAVASpring事务管理学习笔记

1.主要接口介绍

在Spring中,与事务相关的类或接口有以下三个:

?TransactionDefinition

TransactionDefinition的作用是定义一个事务的属性,比如传播属性、隔离属性、超时属性等。

?TransactionStatus

TransactionStatus记录一个运行时的事务。

?PlatformTransactionManager

PlatformTransactionManager的作用是管理事务。它包含三个方法,如下图所示:

其中getTransaction方法的作用是:根据TransactionDefinition定义的事务属性,返回一个相应的事务TransactionStatus,它可能代表一个新的事务,或可能代表一个现有的事务,如果在当前调用堆栈存在一个符合条件的事务。

PlatformTransactionManager的继承关系如下:

PlatformTransactionManager只是一个接口,它的具体实现跟具体的资源有关。如果是数据库就用DataSourceTransactionManager,如果是JMS的消息队列,就用JmsTransactionManager,等等。

下面以DataSourceTransactionManager为例,介绍getTransaction方法的实现。

getTransaction的第一步是通过doGetTransaction()获得一个transaction对象。具体实现如下:

DataSourceTransactionObject的实现如下:

由此可见,在DataSourceTransactionManager中,其管理的transaction对象,实质是一个数据库连接connection。

getTransaction的第二步是判断当前的transaction是新事务还是已存在的事务,如果是已存在的事务,则调用handleExistingTransaction方法。如果是新事务,则根据TransactionDefinition中设置的值,根据事务的传播属性等信息进行相应处理。

2.事务管理的具体实现

Spring实现事务管理功能主要涉及的技术是AOP。如下图展示了事务管理的过程:

在执行用户的具体代码之前,创建事务;在执行完具体代码后,根据执行结果,进行







































鐧界櫆椋庡摢閲屾不鏈濂?
鍖椾含鍝噷鍙互鑳芥不鐤楀ソ鐧界櫆椋?



转载请注明:http://www.jiaju1314.com/zyyd/8367.html