首先說一下什么是事務!
數據庫事務(Database Transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要么完全地執行,要么完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向數據的資源。通過將一組相關操作組合為一個要么全部成功要么全部失敗的單元,可以簡化錯誤恢復並使應用程序更加可靠。一個邏輯工作單元要成為事務,必須滿足所謂的ACID(原子性、一致性、隔離性和持久性)屬性。事務是數據庫運行中的邏輯工作單位,由DBMS中的事務管理子系統負責事務的處理。
來自百度百科!
再說一下事務的四大特性:
1. 原子性(Atomicity)
原子性是指事務包含的所有操作要么全部成功,要么全部回滾,因此事務的操作成功就必須要完全應用到數據庫,
如果操作失敗則不能對數據庫又熱和影響
2.一致性(Consistency)
一致性是指事務必須是數據庫從一個一致性狀態變換到另一個一致性狀態,也就是說一個事務執行之前和執行
之后都必須處於一致性狀態.
那轉賬來說,假設用戶A和用戶B兩者的錢加起來一共是5000,那么不管A還是B如何轉賬,轉幾次帳,事務結束后
兩個用戶的錢加起來應該還是5000,這就是事務的一致性.
3.隔離性(Isolation)
隔離性是當多個用戶並發訪問數據庫時,比如操作同一張時,數據庫為每一個用戶開啟的事務,不能被其他事務的
操作所干擾,多個並發事務之間要相互隔離.
紀要達到這么一種效果:對於任意兩個並發的事務T1和T2,在事務T1看來,T2要么在T1開始之前就已經結束,要么
在T1結束之后才開始,這樣每個事務都感覺不到其他事務在並發的執行.
4.持久性(Durability)
持久性是指一個事務一旦被提交了,那么對數據庫中的數據改變就是永久性的,即便是在數據庫系統遇到故障的情
況下也不會丟失提交事務的操作.
列如我們在使用JDBC 操作數據庫時,在提交事務方法后,提示用戶事務操作完成,當我們程序執行完成直到看到提
示后,就可以認定事務以及正確提交,即使這時候數據庫出現了問題,也必須要將我們的事務完全執行完成,否則就會造成我
們看到提示事務處理完畢,但是數據庫因為故障而沒有執行事務的重大錯誤!