Spring事務簡介
什么是事務稿静?
事務是正確執(zhí)行一系列的操作(或行為),使得數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)換成另一種狀態(tài),且保證操作全部成功,或者全部失敗
事務原則梭冠?
事務必須服從ISO/IEC所制定的ACID原則
- 原子性(Atomicity):不可分割性,事務要么全部被執(zhí)行,要么全部不執(zhí)行
- 一致性(Consistency):事務的執(zhí)行使得數(shù)據(jù)庫從一種正確狀態(tài)轉(zhuǎn)換成另一種正確狀態(tài)
- 隔離性(Isolation):在事務正確提交之前,其它事務不能獲取該事務可能的結果
- 持久性:事務正確提交后,其結果將永久保存到數(shù)據(jù)庫中
Java事務的產(chǎn)生
在Java編寫的程序或系統(tǒng),實現(xiàn)ACID操作時,需要事務來確保邏輯被正確的執(zhí)行
Java事務實現(xiàn)
- 通過JDBC相應方法間接來實現(xiàn)對數(shù)據(jù)庫的增、刪自赔、改妈嘹、查,把事務轉(zhuǎn)移到Java程序代碼中進行控制
- 確保事務=>要么全部執(zhí)行成功,要么撤銷不執(zhí)行
總結: Java事務機制和原理就是操作確保數(shù)據(jù)庫操作的ACID特性
Java事務實現(xiàn)模式
通過Java代碼來實現(xiàn)對數(shù)據(jù)庫的事務性操作
Java事務類型
- JDBC事務:用Connection對象控制的手動模式和自動模式
- JTA(Java Transaction API)事務:與實現(xiàn)無關的,與協(xié)議無關的API
- 容器事務:應用服務器提供的,且大多是基于JTA完成(通常基于JNDI的,相當復雜的API實現(xiàn))
三種事務的差異
- JDBC事務:控制的局限性在一個數(shù)據(jù)連接內(nèi),但是其使用簡單
- JTA事務:功能強大,可跨越多個數(shù)據(jù)庫或多DAO,使用比較復雜
- 容器事務:主要指的是Java EE應用服務器提供的事務管理,局限與EJB應用使用