javascript
Spring事务管理接口
Spring 的事務管理是基于 AOP 實現的,而 AOP 是以方法為單位的。Spring 的事務屬性分別為傳播行為、隔離級別、只讀和超時屬性,這些屬性提供了事務應用的方法和描述策略。
在 Java EE 開發經常采用的分層模式中,Spring 的事務處理位于業務邏輯層,它提供了針對事務的解決方案。
在 Spring 解壓包的 libs 目錄中,包含一個名稱為 spring-tx-3.2.13.RELEASE.jar 的文件,該文件是 Spring 提供的用于事務管理的 JAR 包,其中包括事務管理的三個核心接口:PlatformTransactionManager、TransactionDefinition 和 TransactionStatus。
將該 JAR 包的后綴名 jar 改成 zip 的形式后,解壓壓縮包,進入解壓文件夾中的 \org\springframework\transaction 目錄后,該目錄中的文件如下圖所示。
上圖中,方框所標注的三個文件是我們要學習的核心接口。這三個核心接口的作用及其提供的方法如下。
1. PlatformTransactionManager
PlatformTransactionManager 接口是 Spring 提供的平臺事務管理器,用于管理事務。該接口中提供了三個事務操作方法,具體如下。
在項目中,Spring 將 xml 中配置的事務詳細信息封裝到對象 TransactionDefinition 中,然后通過事務管理器的 getTransaction() 方法獲得事務的狀態(TransactionStatus),并對事務進行下一步的操作。
2. TransactionDefinition
TransactionDefinition 接口是事務定義(描述)的對象,它提供了事務相關信息獲取的方法,其中包括五個操作,具體如下。
在上述五個方法的描述中,事務的傳播行為是指在同一個方法中,不同操作前后所使用的事務。
傳播行為的種類
在事務管理過程中,傳播行為可以控制是否需要創建事務以及如何創建事務。
通常情況下,數據的查詢不會改變原數據,所以不需要進行事務管理,而對于數據的增加、修改和刪除等操作,必須進行事務管理。如果沒有指定事務的傳播行為,則 Spring3 默認的傳播行為是 required。
3. TransactionStatus
TransactionStatus 接口是事務的狀態,它描述了某一時間點上事務的狀態信息。其中包含六個操作。
事務的操作
| void flush() | 刷新事務 |
| boolean hasSavepoint() | 獲取是否存在保存點 |
| boolean isCompleted() | 獲取事務是否完成 |
| boolean isNewTransaction() | 獲取是否是新事務 |
| boolean isRollbackOnly() | 獲取是否回滾 |
| void setRollbackOnly() | 設置事務回滾 |
總結
以上是生活随笔為你收集整理的Spring事务管理接口的全部內容,希望文章能夠幫你解決所遇到的問題。