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