1. 程式人生 > >spring事物 (mu課)

spring事物 (mu課)

1.什麼是事物,

事物指在邏輯上的一組操作,這組事物要麼全部成功,要麼全部失敗

2.事物的的特性:

原子性:事物是不可分割的單位,要麼都發生,要麼都不發生

一致性;指事物前後資料完整性必須保持一致

隔離性;多個使用者併發訪問的時候,一個使用者的事物不能被其他使用者干擾

永續性:一個事物被提交了,它對資料庫的資料的修改是永續性的

3.spring事物管理的三個介面

3.1  PlatformTransactionManager   事物管理器

*rollback(TransactionStatus )

*commit(TransactionStatus )

*getTransation(TransactionDefinition)

 

3.2  TransactionDefinition事物定義資訊(隔離,超時,只讀,傳播)

3.3  TransactionStatus 事物具體執行狀態

4.隔離級別

READ_UNCOMMITED    允許你讀取還未提交的資料,可能導致髒,幻,不可重複讀

READ_COMMITTED 允許在併發事物已經提交後讀取,但幻讀和不可重複讀依舊可能發生

REPEATABLE_READ 對相同欄位的多次讀取時一致的,除非資料被事物本身改變,但是幻讀依舊可以發生,可以防髒讀和不可重複讀

SERIALIZABLE 可確保不發生髒,幻,不可重複讀

5.不考慮隔離性,會發生的安全問題如下

髒讀:一個事物讀取了另外一個事物改寫但未提交的資料,如果這些事物被回滾,則讀到的資料是無效

不可重複讀;在同一事物中,多次讀取同一資料返回的結果有所不同

幻讀:一個事物讀取了幾行記錄後,另外一個事物插入的一些記錄,幻讀就發生了

           再後來的查詢中,第一個事物就會發生有些原來沒有的記錄

6.事物應該在放置在哪層中

業務層

7.業務的傳播行為

事物的傳播行為:解決了業務層方法之間的相互呼叫的問題

 

propagation_supports  如果aaa裡面有事物,則bbb呼叫aaa的事物,如果aaa無事物,則bbb方法就不呼叫了

Propagation_required 如果aaa裡面有事物,則bbb就呼叫aaa裡面的事物,否則bbb就建立一個事物,然後把AAA內容包裹進去,即是兩者在一個事物中

Propagation_required_new 如果aaa裡面有事物,則bbb就把aaa事物掛起,自己在建立一個新的事物,兩者不是在一個事物