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的一些問題.
圖示:
