Spring事務的學習之路


事務的基本概念

  1. 定義
    事務時在訪問數據庫時,確保數據庫從一種正確狀態轉換爲另一種正確狀態。
  2. ACID
    (1)原子性(atomicity)
    即不可分割性,事務要麼全部被執行,要麼全部不執行。當有子事務提交失敗時,會導致他子事務的數據庫操作被回滾。
    (2)一致性(consistency)
    事務的執行使得數據庫從一種正確狀態轉換成另外一種正確狀態
    (3)隔離性(isolation)
    在事務正確提交之前,不允許把事務對該數據的改變提供給任何其他事務。
    (4)持久性(durability)
    事務正確提交之後,其結果將永遠保存在數據庫之中。
  3. 事務出現的問題
    因爲事務的存在,可能在高併發的時候導致讀取的數據不統一,造成誤操作的問題,我們把可能出現的問題分爲以下幾種。
    (1)髒讀
    指事務A讀到了事務B還沒有提交的數據。
    (2)不可重複讀
    指在一個事務裏面讀取了兩次某個數據,讀出來的數據不一致。第一讀取到的是未提交的數據,第二次讀到了提交後的數據,導致兩次讀取的數據出現了差異。
    (3)幻讀
    指在一個事務裏面的操作中發現了未被操作的數據。比如學生信息,事務A開啓事務–>修改所有學生當天簽到狀況爲false,此時切換到事務B,事務B開啓事務–>事務B插入了一條學生數據,此時切換回事務A,事務A提交的時候發現了一條自己沒有修改過的數據,這就是幻讀,就好像發生了幻覺一樣。幻讀出現的前提是併發的事務中有事務發生了插入、刪除操作。
    注: 上述的問題出現在兩個事務都爲結束的情況下,當事務提交成功了,上述問題是不存在的。

以下內容主要以Spring展開講解
4. 隔離級別
聲明式事務的第二個方面是隔離級別。隔離級別定義一個事務可能受其他併發事務活動活動影響的程度。另一種考慮一個事務的隔離級別的方式,是把它想象爲那個事務對於事物處理數據的自私程度。
在這裏插入圖片描述
5. 傳播行爲
事務的第一個方面是傳播行爲。傳播行爲定義關於客戶端和被調用方法的事務邊界。Spring定義了7中傳播行爲。
在這裏插入圖片描述
注意點: Spring默認情況下會對(RuntimeException)及其子類來進行回滾,在遇見Exception及其子類的時候則不會進行回滾操作。
關於Spring的事務可以參考:https://www.cnblogs.com/zhishan/p/3195219.html

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