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 指整個資料庫事務是不可分割的工作單元。原子性確保...