spring事務的傳播方式

2021-07-01 19:48:05 字數 2068 閱讀 7531

事務傳播行為:是指新增事物時的策略 

1 propagation_required

如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。

2  propagation_supports

支援當前事務,如果當前沒有事務,就以非事務方式執行。

3  propagation_mandatory

使當前的事務,如果當前沒有事務,就丟擲異常。

4  propagation_requires_new

新建事務,如果當前存在事務,把當前事務掛起。

5  propagation_not_supported

以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

6  propagation_never

以非事務方式執行,如果當前存在事務,則丟擲異常。

7  propagation_nested

如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作。

spring事務傳播方式

主要控制當前的事務如何傳播到另外的事務中

propagation_nested

如果當前存在事務,則在巢狀事務內執行。

如果當前沒有事務,則進行與propagation_required類似的操作。

巢狀事務乙個非常重要的概念就是內層事務依賴於外層事務。

外層事務失敗時,會回滾內層事務所做的動作。而內層事務操作失敗並不會引起外層事務的回滾

propagation_never

以非事務方式執行,如果當前存在事務,則丟擲異常。

propagation_not_supported

以非事務方式執行操作,如果當前存在事務,就把當前事務掛起

propagation_required

支援當前事務,如果當前沒有事務,就新建乙個事務。這是最常見的選擇(預設)

propagation_requireds_new

新建事務,如果當前存在事務,把當前事務掛起。

propagation_supports

支援當前事務,如果當前沒有事務,就以非事務方式執行。

propagation_mandatory

支援當前事務,如果當前沒有事務,就丟擲異常。

spring事務隔離級別

主要定義事務與事務之間在資料庫讀寫方面的控制範圍

主要解決髒讀、不可重複讀、虛讀三個問題

isolation_default 預設級別

isolation_read_uncommited

事務最低的隔離級別,充許別外乙個事務可以看到這個事務未提交的資料,

會產生髒讀,不可重複讀和幻像讀

isolation_commited

保證乙個事務修改的資料提交後才能被另外乙個事務讀取,可以避免髒讀出現,

但是可能會出現不可重複讀和幻像讀

isolation_repeatable_read

保證乙個事務不能讀取另乙個事務未提交的資料外可以防止髒讀,不可重複讀

但是可能出現幻像讀

isolation_serializable

花費最高代價但是最可靠的事務隔離級別。

事務被處理為順序執行。除了防止髒讀,不可重複讀外,還避免了幻像讀

spring中的事務管理方式:

程式設計式和宣告式(常

注意事項:  

1. 事務邊界設定在service層

2. 需要使sessionfactory.getcurrentsession

(hibernate3.6)不需要配置session上下文hibernate.current_session_context_class

3. spring預設通過捕獲執行時異常實現事務回滾,

非執行期異常不會觸發rollback

可以通過配置rollback-for 指定異常類

事務中不要catch異常,否則spring放棄事務管理s

spring的事務傳播方式

事務傳播行為 是指新增事物時的策略 1 propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。2 propagation supports 支援當前事務,如果當前沒有事務,就以非事務方式執行。3 propagation...

spring事務傳播

採用程式設計式事務 1 getcurrentsession 與opensession 的區別?採用getcurrentsession 建立的session會繫結到當前執行緒中,而採用opensession 建立的session則不會 採用getcurrentsession 建立的session在co...

Spring事務傳播

required 預設 如果當前存在事務,就加入該事務,如果不存在,則建立乙個新的事務 supports 如果呼叫者有事務,則加入該事務,如果沒有,則以非事務方式執行 mandatory 如果存在事務,則加入該事務,如果不存在事務,則拋異常 requires new 重新建立乙個新的事務,如果當前存...