事務:一組邏輯操作單元,使資料從一種狀態變換到另一種狀態。
事務處理(事務操作):保證所有事務都作為乙個工作單元來執行,即使出現了故障,都不能改變這種執行方式。當在乙個事務中執行多個操作時,要麼所有的事務都被提交(commit),那麼這些修改就永久地儲存下來;要麼資料庫管理系統將放棄所作的所有修改,整個事務回滾(rollback)到最初狀態。
為確保資料庫中資料的一致性,資料的操縱應當是離散的成組的邏輯單元:當它全部完成時,資料的一致性可以保持,而當這個單元中的一部分操作失敗,整個事務應全部視為錯誤,所有從起始點以後的操作應全部回退到開始狀態。
呼叫 connection 物件的setautocommit(false);以取消自動提交事務
在所有的 sql 語句都成功執行後,呼叫commit();方法提交事務
在出現異常時,呼叫rollback();方法回滾事務
若此時 connection 沒有被關閉,還可能被重複使用,則需要恢復其自動提交狀態
setautocommit(true)。尤其是在使用資料庫連線池技術時,執行close()方法前,建議恢復自動提交狀態。
【案例:使用者aa向使用者bb轉賬100】
public
void
testjdbctransaction()
catch
(exception e)
catch
(sqlexception e1)
}finally
catch
(sqlexception e)
//7.關閉連線
jdbcutils.
closeresource
(conn, null, null);}
}
其中,對資料庫操作的方法為:
//使用事務以後的通用的增刪改操作(version 2.0)
public
void
update
(connection conn ,string sql, object.
.. args)
// 3.執行sql語句
ps.execute()
;}catch
(exception e)
finally
}
1. 原子性(atomicity)
原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。
2.一致性(consistency)
事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。
3.隔離性(isolation)
事務的隔離性是指乙個事務的執行不能被其他事務干擾,即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。
4.永續性(durability)
永續性是指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來的其他操作和資料庫故障不應該對其有任何影響。
乙個事務與其他事務隔離的程度稱為隔離級別。資料庫規定了多種事務隔離級別, 不同隔離級別對應不同的干擾程度,隔離級別越高, 資料一致性就越好, 但併發性越弱。
四種隔離級別
資料庫提供的4種事務隔離級別:
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-kwfztrwh-1571393751983)(尚矽谷_宋紅康_jdbc.assets/1555586275271.png)]
oracle 支援的 2 種事務隔離級別:read commited, serializable。 oracle 預設的事務隔離級別為:read commited。
mysql 支援 4 種事務隔離級別。mysql 預設的事務隔離級別為:repeatable read。
JDBC 資料庫事務
事務 一組邏輯操作單元,使資料從一種狀態變換到另一種狀態。事務處理 也稱為事務操作,保證所有事務都作為乙個工作單元來執行,即使出現了故障,都不能改變這種執行方式。當在乙個事務中執行多個操作時,要麼所有的事務都被提交 commit 那麼這些修改就永久的儲存下來 要麼資料庫管理系統將丟棄所作的所有修改,...
JDBC 之 資料庫事務
原子性 atomicity 原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。一致性 consistency 事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。隔離性 isolation 事務的隔離性是指乙個事務的執行不能被其他事務干擾,即乙個事務內部的操作及使用...
JDBC 資料庫事務(5)
jdbc程式中為了讓多個 sql 語句作為乙個事務執行 若此時 connection 沒有被關閉,還可能被重複使用,則需要恢復其自動提交狀態 setautocommit true 尤其是在使用資料庫連線池技術時,執行close 方法前,建議恢復自動提交狀態。案例 使用者aa向使用者bb轉賬100 p...