1. 程式人生 > >Spring對事務管理的支援

Spring對事務管理的支援

Spring為事務管理提供了一致的程式設計模版,在高層次建立了統一的事務抽象,不管使用者選擇Spring JDBC、Hibernate、JPA還是選擇MyBatis,Spring都可以讓使用者用統一的程式設計模型進行事務管理。

這種統一處理的方式帶來的好處是不可估量的,使用者完全可以拋開事務管理的問題編寫程式,並在Spring中通過配置完成事務的管理工作。

事務管理關鍵抽象

在Spring事務管理SPI(Service Provider Interface)的抽象層主要包括三個介面,分別是PlantformTransactionManagerTransactionDefinition 和 TransactionStatus。

TransactionDefinition : 用於描述事務的隔離級別、超時時間、是否為只讀事務和事務的傳播規則等控制事務具體行為的事務屬性

PlantformTransactionManager : 根據TransactionDefinition提供的事務屬性配置資訊建立事務,並用TransactionStatus描述這個啟用事務的狀態。

TransactionStatus : 代表一個事務具體的執行狀態,事務管理器可以通過該介面獲取事務執行期的狀態資訊or間接地回滾事務。

Spring事務管理實現類

Spring將事務管理委託給底層具體的持久化框架來完成。因此,Spring為不同的持久化框架提供了不同的PlantformTransactionManager介面的實現類。

不同持久化技術對應發的事務管理器實現類
事務 說明
org.springframework.orm.jpa.JpaTransactionManager 使用JPA進行持久化時候,使用該事務管理器
org.springframework.orm.hibernateX.HibernateTransactionManager 使用Hibernate X.0版本進行持久化時,使用該事務管理器
org.springframework.jdbc.datasource.DataSourceTransactionManager 使用SpringJDBC或者MyBatis等基於DataSource資料來源
的持久化技術時,使用該事務管理器
org.springframework.orm.jdo.JdoTransactionManager 使用JDO進行持久化時,使用該事務管理器
org.springframework.transaction.jta.JtaTransactionManager 具有多個數據源的全域性事務使用該事務管理器