spring 中事務的屬性
1.傳播行為
定義了關於客戶端和被呼叫方法的事務邊界。傳播規則就是在說明新的事務是否要被啟動或是掛起,或者方法是否要在事務環境中執行。
spring定義了7種不同的傳播行為。
1)propagation_mandatory
表明方法必須要在事務中執行。如果事務不存在,丟擲異常
2)propagation_nested
表示如果當前已經存在乙個事務,則該方法應當執行在乙個巢狀的事務中。被巢狀的事務可以從當前事務中單獨地提交或回滾。如果當前事務不存在,就相當於propagation_required
3)propagation_never
表示當前的方法不應該執行在乙個事務上下文中。如果當前存在乙個事務,則會丟擲乙個異常。
4)propagation_not_supported
表示該方法不應該在事務中執行。如果乙個現有的事務正在執行中。它將在該方法的執行期間被掛起
5)propagation_required
表示當前方法必須執行在乙個事務中。如果乙個現有的事務正在執行中,該方法將執行在這個事務中。否則的話,就要開始乙個新的事務。
6)propagation_requires_new
表示當前方法必須執行在它自己的事務中。如果乙個現有事務在執行的話,將在這個方法執行期間被掛起。
7)propagation_supports
表示當前方法不需要事務處理環境,但如果有乙個事務已經在執行的話,這個方法也可以在這個事務中執行
2.隔離級別
多個事務併發執行的關係。因為併發會導致以下問題
.髒讀(dirty read) 乙個事務讀取了被另乙個事務改寫但還沒提交的資料。
.不可重複讀(nonrepeatable read) 乙個事務執行相同的查詢兩次或兩次以上,但每次查詢結果都不同時。這由於另乙個併發事務在兩次查詢之間更新了資料
.幻讀(phantom read)
當乙個事務讀取幾行記錄後,另乙個併發事務插入一些記錄,就發生了幻讀
spring定義了以下5種隔離關係
1)isolation_default
使用後端資料庫預設得隔離級別
2)isolation_read_uncommitted
允許你讀取還未提交的改變了的資料。可能導致髒讀,不可重複讀,幻讀
3)isolation_read_committted
執行在併發事務已經提價後讀取。可防止髒讀,但不可重複讀,幻讀都有可能發生
4)isolation_repeatable_read
對相同欄位的多次讀取結果是一致的,除非資料被事務本身。可防止髒讀,不可重複讀,但幻讀仍可能發生。
5)isolation_serializable
完全服從acid的隔離級別,確保不發生髒讀,不可重複讀,幻讀。它的典型做法就是完全鎖定在事務中涉及的資料表。因此它是最慢地。
3.唯讀提示
通過唯讀屬性,資料庫可以對事務進行優化。
4.事務超時時間
設定了的話,事務在超過這個時間後就自動回滾。避免占用資源過久。
Spring的事務屬性
在transactiondefinition介面中定義了五個不同的事務隔離級別 引用巢狀事務乙個非常重要的概念就是內層事務依賴於外層事務。外層事務失敗時,會回滾內層事務所做的動作。而內層事務操作失敗並不會引起外層事務的回滾。propagation requires new 和 propagation...
spring事務的屬性
事務屬性的種類 傳播行為 隔離級別 唯讀和事務超時 a 傳播行為定義了被呼叫方法的事務邊界。傳播行為 意義 propergation mandatory 表示方法必須執行在乙個事務中,如果當前事務不存在,就丟擲異常 propagation nested 表示如果當前事務存在,則方法應該執行在乙個巢狀...
Spring 事務屬性
spring事務機制主要包括宣告式事務和程式設計式事務,此處側重講解宣告式事務,程式設計式事務在實際開發中得不到廣泛使用,僅供學習參考。spring宣告式事務讓我們從複雜的事務處理中得到解脫。使得我們再也無需要去處理獲得連線 關閉連線 事務提交和回滾等這些操作。再也無需要我們在與事務相關的方法中處理...