在 Java 中,事務通常被用來維護對數(shù)據(jù)庫的更新操作的一致性和完整性。事務具有四個特性,稱為 ACID 特性:
1.原子性(Atomicity):一個事務必須被視為一個不可分割的最小操作單元,事務中的所有操作要么全部完成,要么全部不完成。如果在事務執(zhí)行過程中發(fā)生了錯誤,會被回滾(Rollback)到最初的狀態(tài),就像這個事務從來沒有被執(zhí)行過一樣。
2.一致性(Consistency):在事務開始之前和事務結束之后,數(shù)據(jù)庫必須處于一致的狀態(tài)。在事務開始之前和事務結束之后,應該檢查數(shù)據(jù)的約束,如唯一性、默認值等。如果數(shù)據(jù)在事務執(zhí)行過程中被破壞了,事務會被回滾,以確保數(shù)據(jù)的一致性。
3.隔離性(Isolation):每個事務的執(zhí)行應該與其他事務的執(zhí)行相互隔離,即它們不能相互干擾。這意味著如果一個事務正在訪問某個數(shù)據(jù),另一個事務就不能同時訪問這個數(shù)據(jù),直到第一個事務完成并釋放了對數(shù)據(jù)的鎖定。在這種情況下,一個事務可能看不到另一個事務的結果,直到它已經完成。
4.持久性(Durability):一旦事務提交,它的結果應該是永久性的,即使系統(tǒng)故障也不應該影響事務的結果。這通常通過將事務的日志記錄到磁盤中來實現(xiàn),以便在系統(tǒng)崩潰時可以恢復事務。