數據庫事務相關



JDBC事務操作

事務(ACID)

原子性(atomicity):組成事務處理的語句形成一個邏輯單元,不能只執行其中的一部分

一致性(consistency):在事務處理執行前後,數據庫是一致的(數據庫數據完整性約束)

隔離性(isolcation):一個事務處理對另一個事務處理的影響

持續性(durability):事務處理的效果能夠被永久的保存下來

 

Connection.setAutoCommit(true/false) 設置事務是否自動提交(jdbc默認提交事務)

Connection.commit() 提交事務

Connection.rollback() 回滾事務

 

JTA:跨數據庫訪問資源,分成兩個階段提交事務。  JTA容器

 

隔離級別:

可串行化:(Serializable)最安全,但是效率最低。

可重複讀:(Repeatable read)有幻讀可能(推薦)

讀已提交:(Read committed)有不可重複讀、幻讀(推薦)

讀未提交(Read uncommitted)髒讀、不可重複讀、幻讀。安全性最差,效率最高。

 

(悲觀鎖、樂觀鎖)

鎖機制主要是爲了解決併發性問題的。

悲觀鎖:悲觀鎖,通常是由數據庫機制實現的,在整個過程中把數據鎖住(查詢時),只要事務不釋放(提交/回滾)那麼任何用戶都不能查看或修改。

 

樂觀鎖:大多數的使用是採用數據版本的方式(version)實現,一般在數據庫中加入一個version字段在讀取數據的時候將version讀取出來,在保存數據的時候判斷version的值是否小於數據庫中的version值,如果小於不予更新,否則給予更新。

 

 

 

Hibernate對悲觀鎖和樂觀鎖都提供了支持

悲觀鎖:LockMode.UPGRADE(loadget 獲得對象的時候設置該屬性)

樂觀鎖:需要使用到version字段和配置(在對象中就要聲明該version字段)

發佈了104 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章