01.Spring事務(wù)

1.事務(wù)的概念

事務(wù)值得是邏輯上的一組操作,這組操作要么全部成功,要么全部失敗.

2.具體實例

1.場景-銀行轉(zhuǎn)賬

一個轉(zhuǎn)賬過程
如果A給B轉(zhuǎn)賬期間,銀行系統(tǒng)發(fā)生故障,就要保證A,B兩者的財產(chǎn)不能出現(xiàn)任何損失.
所以轉(zhuǎn)賬的操作就要添加到事務(wù)中進行,必須一起成功,或者一起失敗.

具體點就是,要么A給B成功轉(zhuǎn)賬,A少了3000元,B多了3000元,要么A沒有給B轉(zhuǎn)賬成功,A沒少一分錢,B沒多一分錢.

2.事務(wù)的特性

總的來講分為4類特性

原子性
一致性
隔離性
持久性

1.原子性

原子性是指事務(wù)是一個不可分割的工作單位,事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生.

具體就是上面的例子.

2.一致性

一致性指事務(wù)前后數(shù)據(jù)的完整性必須保持一致.

實例:就是說A和B轉(zhuǎn)賬操作完成之前和之后,A,B兩者的存款之和,沒有任何變化.

3.隔離性

隔離性指的是指多個用戶并發(fā)訪問數(shù)據(jù)庫時,一個用戶的事務(wù)不能被其他用戶的事務(wù)所干擾.多個并發(fā)的事務(wù)之間的數(shù)據(jù)要相互隔離.

實例:


A正在被一個事務(wù)進行更新操作,另外一個事務(wù)也進行對A對象的更新操作,這樣就導(dǎo)致第一個事務(wù)對A的修改,被第二個事務(wù)對A的修改給覆蓋,修改記錄被覆蓋掉了,為了避免這種情況,所以事務(wù)執(zhí)行期間,必須要有隔離性.

4.持久性

持久性是指一個事務(wù)一旦被提交,他對數(shù)據(jù)庫中的修改就是永久性的,即使數(shù)據(jù)庫發(fā)生故障也不對其出現(xiàn)任何影響.

3.Spring中的事務(wù)管理

Spring事務(wù)管理主要有三個接口

1. platfromTransactionManager
2. TransactionDefinition
3. TransactionStatus

1.platfromTransactionManager

Spring為不同的持久化框架提供了不同的PlatfromTransactionManager接口實現(xiàn)


2.TransactionDefinition

事務(wù)定義信息(隔離級別,傳播,超時,只讀)

可預(yù)見的安全性問題包括:臟讀,幻讀,不可重復(fù)讀

1.臟讀
一個事務(wù)讀取了另外一個事務(wù)改寫但沒有提交的數(shù)據(jù),如果這些數(shù)據(jù)被回滾,則讀到的數(shù)據(jù)是無效的.

2.不可重復(fù)讀
在同一事務(wù)中,多次讀取同一數(shù)據(jù)返回的結(jié)果有所不同.

3.幻讀
一個事物讀取了幾行記錄之后,另一個事務(wù)插入一些記錄,幻讀就會產(chǎn)生.

再后來的查詢中,第一個事務(wù)就會發(fā)現(xiàn)有些原來沒有的記錄,

隔離級別:讀未提交,讀已提交,可重復(fù)讀,可串行化.

1.隔離級別的劃分(安全等級升序)

2.事務(wù)的傳播行為

主要用來解決服務(wù)器端的SERVICE&&DAO的一些問題.

圖示:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容