spring事務的五種屬性

2021-08-07 11:20:30 字數 2878 閱讀 5279

事務5種屬性

1.事務傳播性 propagation

2.事務隔離性 isolation

3.事務回滾屬性 rollbackfor…等

4.事務唯讀屬性 readonly && 事務超時屬性 timeout

用@transaction宣告註解方式**例項

1).事務傳播屬性

當事務方法被另乙個事務方法呼叫時, 必須指定事務應該如何傳播. 例如: 方法可能繼續在現有事務中執行, 也可能開啟乙個新事務,

並在自己的事務中執行.

事務的傳播行為可以由傳播屬性指定. spring 定義了 7 種類傳播行為.

常用的有required 和 required_new 屬性

按著需求來介紹

propagation 屬性設定為required 時事務情況

當 bookservice 的 purchase() 方法被另乙個事務方法 checkout() 呼叫時, 它缺省會在現有的事務內執行.這個預設的傳播行為就是required. 因此在 checkout() 方法的開始和終止邊界內只有乙個事務. 這個事務只在

checkout() 方法結束的時候被提交, 結果使用者一本書都買不了

事務傳播屬性可以在 @transactional 註解的 propagation 屬性中定義

如圖所示 事務情況

propagation 屬性設定為required_new 時事務情況

另一種常見的傳播行為是 requires_new. 它表示該方法必須啟動乙個新事務, 並在自己的事務內執行. 如果有事務在執行, 就應該先掛起它.

如圖所示:

傳播性還可以通過xml配置下,如圖

那麼併發事務也會導致的一些問題

**當同乙個應用程式或者不同應用程式中的多個事務在同乙個資料集上併發執行時, 可能會出現許多意外的問題

併發事務所導致的問題可以分為下面三種型別:

髒讀: 對於兩個事物 t1, t2, t1 讀取了已經被 t2 更新但還沒有被提交的字段. 之後, 若 t2 回滾,t1讀取的內容就是臨時且無效的.

不可重複讀:對於兩個事物 t1, t2, t1 讀取了乙個字段, 然後 t2 更新了該字段. 之後, t1再次讀取同乙個字段,值就不同了.

幻讀:對於兩個事物 t1, t2, t1 從乙個表中讀取了乙個字段, 然後 t2 在該表中插入了一些新的行. 之後, 如果 t1再次讀取同乙個表, 就會多出幾行.

因此我們需要將事務與事務之間隔離。

2).事務隔離性

- 從理論上來說, 事務應該彼此完全隔離, 以避免併發事務所導致的問題. 然而, 那樣會對效能產生極大的影響, 因為事務必須按順序執行.

- 在實際開發中, 為了提公升效能, 事務會以較低的隔離級別執行.

- 事務的隔離級別可以通過隔離事務屬性指定

1.事務隔離級別

sping支援的事務隔離級別:上圖

事務的隔離級別要得到底層資料庫引擎的支援, 而不是應用程式或者框架的支援.

oracle 支援的 2 種事務隔離級別:read_commited , serializable

mysql 支援 4 中事務隔離級別.

3).設定回滾事務

預設情況下只有未檢查異常(runtimeexception和error型別的異常)會導致事務回滾. 而受檢查異常不會.

事務的回滾規則可以通過 @transactional 註解的 rollbackfor 和 norollbackfor 屬性來定義.這兩個屬性被宣告為 class 型別的, 因此可以為這兩個屬性指定多個異常類.:上圖

rollbackfor: 遇到io、sql exception 時必須進行回滾

norollbackfor: 一組異常類,遇到arithmeticexception 時必須不回滾

一般這個值是不設定的,預設未檢查異常(runtimeexception和error型別的異常)會回滾。

4).超時和唯讀屬性 readonly & timeout

為什麼要有這兩個屬性

設定超時和唯讀事務屬性

超時和唯讀屬性可以在 @transactional 註解中定義.超時屬性以秒為單位來計算.上圖:

在 spring 2.x 事務通知中, 超時和唯讀屬性可以在 元素中進行指定. 上圖:

以上就是sping事務屬性的詳細總結。

spring的五種事務配置方式

spring事務配置的五種方式 前段時間對spring的事務配置做了比較深入的研究,在此之間對spring的事務配置雖說也配置過,但是一直沒有乙個清楚的認識。通過這次的學習發覺spring的事務配置只要把思路理清,還是比較好掌握的。總結如下 spring配置檔案中關於事務配置總是由三個組成部分,分別...

Spring事務配置的五種方式

前段時間對spring的事務配置做了比較深入的研究,在此之間對spring的事務配置雖說也配置過,但是一直沒有乙個清楚的認識。通過這次的學習發覺spring的事務配置只要把思路理清,還是比較好掌握的。總結如下 spring配置檔案中關於事務配置總是由三個組成部分,分別是datasource tran...

Spring事務配置的五種方式

前段時間對spring的事務配置做了比較深入的研究,在此之間對spring的事務配置雖說也配置過,但是一直沒有乙個清楚的認識。通過這次的學習發覺spring的事務配置只要把思路理清,還是比較好掌握的。總結如下 spring配置檔案中關於事務配置總是由三個組成部分,分別是datasource tran...