Java中事務的特性
阿新 • • 發佈:2019-02-17
Java-事務學習小結:
事務的特性
原子性:指事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。
一致性:事務必須使資料庫從一個一致性狀態變換到另外一個一致性狀態。轉賬前和轉賬後的總金額不變。
隔離性:事務的隔離性是多個使用者併發訪問資料庫時,資料庫為每一個使用者開啟的事務,不能被其他事務的操作資料所幹擾,多個 併發事務之間要相互隔離。
永續性:指一個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響。
事務的隔離級別
贓讀:指一個事務讀取了另一個事務未提交的資料。
不可重複讀:在一個事務內讀取表中的某一行資料,多次讀取結果不同。一個事務讀取到了另一個事務提交後的資料。(update)
資料庫通過設定事務的隔離級別防止以上情況的發生:
* 1、READ UNCOMMITTED: 贓讀、不可重複讀、虛讀都有可能發生。
* 2、READ COMMITTED: 避免贓讀。不可重複讀、虛讀都有可能發生。(oracle預設的)
* 4、REPEATABLE READ:避免贓讀、不可重複讀。虛讀有可能發生。(mysql預設)
* 8、SERIALIZABLE: 避免贓讀、不可重複讀、虛讀。
級別越高,效能越低,資料越安全
mysql中:
檢視當前的事務隔離級別:SELECT @@TX_ISOLATION;
更改當前的事務隔離級別:SET TRANSACTION ISOLATION LEVEL 四個級別之一。
設定隔離級別必須在事務之前
JDBC控制事務的隔離級別
Connection介面:
設定隔離級別:必須在開啟事務之前。