天天看點

Spring之事務管理總結

什麼是事務

  • 在資料庫 一組操作中 要麼全部成功 要麼全部失敗 簡單說 就是增删改查 要麼全部成功 要麼全部失敗

事務有什麼特性ACID

  • 原子性:原子性不可分割 整個操作要麼都成功 要麼都失敗
  • 一緻性:資料 事務前後的資料保持一緻
  • 持久性:指事務一旦被送出 就無法被修改
  • 隔離性:兩個事務之間 并發通路的情況

隔離有什麼問題

  • 髒讀:一個事務讀到另一個事務沒有送出的資料
  • 不可重複讀:一個事務讀到另一個事務已經送出的事務(update)
  • 幻讀:一個事務讀到另一個事務已經送出的事務(insert)

 隔離級别有哪些

  • 讀未送出:一個事務讀到另一個事務沒有送出的資料(存放3個問題 解決0個問題)
  • 讀已送出:一個事務讀到另一個事務已經送出的資料(存放2個問題 解決1個問題 髒讀)
  • 可重複讀:在一個事務中讀到的資料是重複的(存放1個問題 解決2個問題 髒讀 不可重複讀)
  • 串行化:單事務(存放0個問題 解決3個問題 髒讀 不可重複讀 幻讀)

對比:

        性能:讀未送出  >  讀已送出  >  可重複讀  >  串行化

        安全:串行化  <  可重複讀  <  讀已送出  <  讀未送出

預設隔離級别:

        ——mysql:可重複讀

        ——Oracle:讀已送出(Oracle有自己的一套安全管理事務)

事務管理平台管理器【重點】

在spring-tx裡面有一個事務管理平台管理器中 有一個getTransaction方法 參數是一TransactionDefinition事務定義

Spring之事務管理總結

 事務定義中有隔離級别 傳播行為等

Spring之事務管理總結