spring事務管理

Spring的事務機制包括聲明式事務和編程式事務。

編程式事務管理:Spring推薦使用TransactionTemplate,實際開發中使用聲明式事務較多。
聲明式事務管理:將我們從複雜的事務處理中解脫出來,獲取連接,關閉連接、事務提交、回滾、異常處理等這些操作都不用我們處理了,Spring都會幫我們處理。
聲明式事務管理使用了AOP面向切面編程實現的,本質就是在目標方法執行前後進行攔截。在目標方法執行前加入或創建一個事務,在執行方法執行後,根據實際情況選擇提交或是回滾事務。

如何管理
Spring事務管理主要包括3個接口,Spring的事務主要是由它們(PlatformTransactionManager,TransactionDefinition,TransactionStatus)三個共同完成的。

1. PlatformTransactionManager:事務管理器–主要用於平臺相關事務的管理
主要有三個方法:
commit 事務提交;
rollback 事務回滾;
getTransaction 獲取事務狀態。

2. TransactionDefinition:事務定義信息–用來定義事務相關的屬性,給事務管理器PlatformTransactionManager使用
這個接口有下面四個主要方法:
getIsolationLevel:獲取隔離級別;
getPropagationBehavior:獲取傳播行爲;
getTimeout:獲取超時時間;
isReadOnly:是否只讀(保存、更新、刪除時屬性變爲false–可讀寫,查詢時爲true–只讀)
事務管理器能夠根據這個返回值進行優化,這些事務的配置信息,都可以通過配置文件進行配置。

3. TransactionStatus:事務具體運行狀態–事務管理過程中,每個時間點事務的狀態信息。
三個方法:
hasSavepoint():返回這個事務內部是否包含一個保存點,
isCompleted():返回該事務是否已完成,也就是說,是否已經提交或回滾
isNewTransaction():判斷當前事務是否是一個新事務

聲明式事務的優缺點:
優點:不需要在業務邏輯代碼中編寫事務相關代碼,只需要在配置文件配置或使用註解(@Transaction),這種方式沒有侵入性。
缺點:聲明式事務的最細粒度作用於方法上,如果像代碼塊也有事務需求,只能變通下,將代碼塊變爲方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章