Spring 事務特性

2022-08-01 09:12:09 字數 2385 閱讀 9344

忘記 從哪轉的了!!!

一、事務屬性概述

在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...