hibernate有關事務方面的基礎知識

2021-08-08 20:01:54 字數 1130 閱讀 9302

hibernate有關事務方面的基礎知識

1、什麼是事務?

把一系列的相關資料操作作為乙個邏輯的工作單元,這個邏輯工作單元就稱為事務

2、事務的特點:

邏輯工作單元中的資料操作要麼全部成功,只要乙個操作失敗,那麼整體回滾

3、事務的特性:acid

原子性:事務中所有的資料操作應該作為整體執行,不可以進行分割執行

一致性:事務操作前後,資料庫中的資料應該保證一致的 

隔離性:多個事務訪問同乙個資料時,不能相互影響,也就事務之間相互隔離

永續性:事務執行完畢,對資料的影響應該能夠持久的儲存下來

4、關係型資料庫如何保證事務的特性:

原子型、一致性和永續性通過資料庫日誌檔案實現的

隔離性是通過資料庫鎖機制實現,在sql標準中為了便於開發人員使用資料庫鎖,sql表中定義事務的隔離級別,為資料庫設定不同的隔離級別就可以呼叫不同的資料庫鎖

5、什麼是事務併發:

多個事務同時執行,叫做事務的併發。

6、事務併發操作統一資料,會引起併發問題:

1、第一類丟失更新:乙個事務把另外乙個事務提交的資料回滾

2、髒讀:乙個事務讀取另外乙個事務未提交的資料,髒讀和第一丟失更新對資料一致性造成很嚴重的問題,所以應該盡量避免這兩類問題

3、不可重複讀:乙個事務讀到另一事務已提交的更新資料

4、第二類丟失更新:

5、幻讀:

7、怎麼避免併發引起的問題?

使用資料庫隔離級別,sql標準中定義四種事務的隔離級別:

read uncommitted 讀未提交 避免第一類丟失更新,但是無法避免髒讀、不可重複讀、幻讀

read committed 讀已提交 可以避免第一類丟失更新、髒讀、但是不能避免不可重複讀、幻讀

repeatable 可重複 可以避免第一類丟失更新、髒讀、不可重複讀、但是不能避免幻讀

serializable 序列化 可以避免所有併發引起問題

因為事務的隔離級別越高事務併發效能越差,所以開發時並不是說將事務的隔離級別設定為最高就最好,一般情況下

會設定乙個合理隔離級別,避免嚴重的併發問題,比如read committed,如果專案中有些資料對併發要求

更高,那麼這時我們就可以採用鎖對要求高的資料進行加鎖,從而避免併發引起的其他問題

有關hibernate的查詢

hibernate查詢方式舉例 1 單個物件 a query query session.createquery from consortbean a where a.person.id query.setstring 0,pb.getid 引數從零開始 list list query.list b...

hibernate事務簡介

資料庫的事務如果控制不好,很容易導致資料出現髒讀,不可重複讀,幻讀,這樣就會造成資料的混亂,那怎麼弄呢?利用資料庫事務的隔離級別進行控制就可以了 hibernate隔離級別有 1 read uncommitted isolation 2 read committed isolation 4 repe...

hibernate 事務機制

資料庫事務的定義 事務是指一組相互信賴的操作行為。這些操作要麼必須全部成功,要麼必須全部失敗,以保證資料的一致性和完整性。資料庫事務是對現實生活中事務的模擬,它由一組在業務邏輯上相互信賴的sql語句組成。資料庫事務的acid屬性 原子性 atomic 指整個資料庫事務是不可分割的工作單元。原子性確保...