1. 程式人生 > >Hibernate事務,及其併發處理

Hibernate事務,及其併發處理

首先簡單介紹一下事務:

資料庫事務必須滿足:ACID

  原子性:也稱自動性,指一個事務必須執行一個完整的工作,要麼全部執行,要麼全部不執行。

  一致性:指當事務完成時,必須使所有的資料具有一致的狀態。

  隔離性:也稱獨立性,指並行事務的修改必須與其他並行事務的修改相互獨立,一個事務處理的資料,要麼是其他事務執行之前的狀態,要麼是其他事務執行之後的狀態,但不能是其他事務正在處理的資料。

  永續性:指當一個事務完成之後,將影響永久性的存於系統中,即事務操作將寫入資料庫中。

併發會出現的問題

髒讀:就是一個事務還沒有提交你就可以讀取它的資料,比如:事務A insert了一條資料,然後事務B讀取了這條資料,然後事務

A回滾了,那麼此時就出現了髒讀的情況。髒讀就是讀取一個事務提交前的資料,

   可重複讀:就是在同一個事務中多次讀取同一條資料,比如:事務A讀取了一個庫存資料為500,此時事務B也讀取了庫存資料500,並且將庫存資料修改為1000,並且提交事務,此時事務A又去讀物庫存資料發現庫存資料和之前的資料不同。

    幻讀:一個事務執行兩次查詢,但第二次查詢比第一次查詢多出了一些資料行 

事務隔離級別

o Serializable:序列化。隔離級別最高

o Repeatable Read:可重複讀。

o Read Committed:讀已提交資料。

o Read Uncommitted:讀未提交資料。隔離級別最差。

隔離級別

是否存在髒讀

是否存在可重複讀

是否存在幻讀

Read Uncommited

Read Committed

Repeatable read

serial