Spring對事務管理的支援
阿新 • • 發佈:2019-02-18
Spring為事務管理提供了一致的程式設計模版,在高層次建立了統一的事務抽象,不管使用者選擇Spring JDBC、Hibernate、JPA還是選擇MyBatis,Spring都可以讓使用者用統一的程式設計模型進行事務管理。
這種統一處理的方式帶來的好處是不可估量的,使用者完全可以拋開事務管理的問題編寫程式,並在Spring中通過配置完成事務的管理工作。
事務管理關鍵抽象
在Spring事務管理SPI(Service Provider Interface)的抽象層主要包括三個介面,分別是PlantformTransactionManager、TransactionDefinition 和 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 | 具有多個數據源的全域性事務使用該事務管理器 |