瞎掰事務(二):spring事務

瞎掰事務(二)spring事務

事務的定義

上文中從數據庫,spring 框架和系統三個層級的角度解析了事務的四大特性。每個層級都有對事務的處理機制和定義:數據庫完成了事務持久性和隔離性。

持久性主要通過存儲引擎和redo 日誌

隔離性即併發控制,不同的隔離級別下使用的鎖技術細節不同,不同的隔離級別之下業務系統所要的編碼約束也應不同

原子性和autocommit 的參數設置

在spring 的眼裏,事務是什麼。spring 的所承擔的事務的原子性一方面在與控制autocommit 的設置,另一方面是異常處理鏈。這是我對spring事務的新定義。
異常鏈:
異常的處理鏈:

一致性是從上至下貫穿業務系統到數據庫相關。而受開發人員控制的只有業務系統層級。正確的一致性即正確的使用了spring的異常處理鏈條。

事務的擴展

傳播行爲

個數 是否支持當前事務 是否新建事務處理
PROPAGATION_MANDORY 支持當前事務,如果當前沒有事務,就拋出異常 1 Y 同步當前 Y 沒有當前,則新建
PROPAGATION_REQUIRES_NEW 新建事務,如果當前存在事務,把當前事務掛起 1或2 掛起當前,新建 Y 沒有當前,則新建
PROPAGATION_REQUIRED 支持當前事務,如果當前沒有事務,就新建一個事務。這是默認的的選擇。 1 Y 同步當前 Y 沒有當前,則新建
PROPAGATION_NESTED 如果當前存在事務,則在嵌套事務內執行。否則,它看起來和 PROPAGATION_REQUIRED 看起來沒什麼倆樣 1 Y 保留savePoint,新建  
PROPAGATION_SUPPORT 支持當前事務,如果當前沒有事務,就以非事務方式執行 0或1 Y 同步當前  
PROPAGATION_NOT_SUPPORT 以非事務方式執行操作,如果當前存在事務,就把當前事務掛起 0或ERROR 掛起當前

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章