忘記 從哪轉的了!!!
一、事務屬性概述
在spring中,事務屬性描述了事務策略如何應用到方法上,事務屬性包含5個方面:
① 傳播行為
② 隔離級別
③ 回滾策略
④ 超時時間
⑤ 是否唯讀
二、事務的傳播行為屬性
當事務方法被另乙個事務方法呼叫時,必須指定事務應該如何傳播。例如,方法可能繼續在現有的事務中允許,也可能開啟乙個新事務,並在自己的事務中執行。
事務的傳播行為可以由傳播屬性指定,spring定義了7種型別的傳播行為。其中最常用的是required和requires_new。
這裡寫描述
事務的傳播屬性可以在@transactional註解的propagation屬性中定義。
舉個例子:
/*** 使用 @transactional 指定事務方法
*/@service("bookshopservice")
public class bookshopserviceimpl implements bookshopservice
}三、事務的隔離級別
從理論上來說,事務應該彼此完全隔離,以避免併發事務所導致的問題。然而,那樣會對效能產生極大的影響,因為事務必須按順序執行。
在實際開發中,為了提公升效能,事務會以較低的隔離級別執行。
事務的隔離級別可以通過隔離級別事務屬性(isolation)指定。
spring支援的事務隔離級別:
事務的隔離級別要得到底層資料庫引擎的支援,而不是應用程式或者框架的支援。
oracle 支援的2種事務隔離級別:read_commit。
mysql 支援4種事務隔離級別:read-uncommitted、read-committed、repeatable-read 和 serializable。
這裡寫描述
用 @transactional註解宣告式的管理事務時可以在 @transactional 的isolation屬性中設定隔離級別。
舉個例子:
/**1. 使用 @transactional 指定事務方法
*/@service("bookshopservice")
public class bookshopserviceimpl implements bookshopservice
}四、事務的回滾屬性
預設情況下只有未檢查異常( runtimeexception 和 error 型別的異常)會導致事務回滾,而檢查異常不會。
事務回滾的規則可以通過 @transactional註解的 rollbackfor和 norollbackfor屬性來定義,這兩個屬性被宣告為class 型別的,因此可以為這兩個屬性指定多個異常類。
① rollbackfor:指定遇到哪些異常時必須進行回滾。
② norollbackfor:指定遇到哪些異常時,必須不回滾。
舉個例子:
/*** 使用 @transactional 指定事務方法
*/@service("bookshopservice")
public class bookshopserviceimpl implements bookshopservice
)public void purchasesiglebook(string acctname, string bookid)
}五、事務的唯讀屬性
如果乙個事務只讀取資料但不修改資料,資料庫引擎可以對這個事務進行優化。
唯讀事務屬性:表示這個事務只讀取資料但不更新數,這樣可以幫助資料庫進行優化事務。
唯讀屬性可以在 @transactional註解中readonly屬性中定義,其取值只有true和false。
舉個例子:
/*** 使用 @transactional 指定事務方法
*/@service("bookshopservice")
public class bookshopserviceimpl implements bookshopservice
}六、事務的超時屬性
由於事務可以在行和表上獲得鎖,因此長期執行的事務會占用資源,並對整體效能產生影響。
超時事務屬性:事務在強制回滾之前可以保持多久,這樣可以防止長期執行的事務占用資源。
超時屬性可以在 @transactional註解中timeout屬性中定義,其單位為秒。
舉個例子:
/*** 使用 @transactional 指定事務方法
*/@service("bookshopservice")
public class bookshopserviceimpl implements bookshopservice
}
spring事務傳播特性
1.propagation required 如果存在乙個事務 則支援當前事務。如果沒有事務則開啟。2.propagation supports 如果存在乙個事務 則支援當前事務。如果沒有事務則非事務執行。3.propagation mandatory 如果已經存在乙個事務 則支援當前事務。如果沒有...
Spring的事務特性
spring一共有四個基本特性 1 原子性 被事務管理的方法,要麼一起被執行,要麼一起被回滾,不能單獨處理。比如銀行取錢時,不能單獨記錄取錢這個動作,還需要扣除賬戶餘額。2 一致性 事務被執行後,所有資料需要保持正確性,如果有錯誤,則自動進行回滾。如銀行取錢時,如果某些步驟出錯,賬戶將不會被扣款。3...
spring事務傳播特性
spring事務傳播特性 事務傳播行為就是多個事務方法相互呼叫時,事務如何在這些方法間傳播。spring支援7種事務傳播行為 spring 預設的事務傳播行為是 propagation required,它適合於絕大多數的情況。假設 servivex methodx 都工作在事務環境下 即都被 sp...