第三天第五章 Spring的事務管理機制

2021-09-26 03:38:52 字數 1586 閱讀 9860

摘要:spring的事務管理主要由三個方面共同完成,事務管理器,事務定義資訊,事務狀態。

主要提供三個方法,提交事務(commit),回滾事務(rollback),獲取事務狀態(gettransaction)

不同的框架提供了不同的platfromtransactionmanager介面實現,spring對應的介面,使用連線進行事務控制:開啟事務,提交事務,回滾事務。

使用者應該根據持久層的技術來選擇對應的事務管理器。

主要提供的方法,隔離級別獲取,傳播行為獲取,獲取超時時間,是否唯讀。

事務的隔離級別:default使用後端資料庫預設的隔離級別,read_uncommited允許讀取事務還未提交的資料,可能發生髒讀,不可重複讀,幻讀。read_commited允許併發事務已經提交後讀取,可以防止髒讀,可能發生不可重複讀,幻讀。repeatable_read對相同字段多次讀取一致,可防止髒讀,不可重複讀,但是可能發生幻讀。serializable,完全服從acid的隔離級別,確保不發生髒讀,不可重複讀,幻讀。

髒讀:乙個事務讀取了另外乙個事務改寫,但是還沒有提交的資料,如果發生回滾,就會發生髒讀。

不可重複讀:在同一事務中,多次讀取同一資料返回結果有所不聽,因為在多次讀取之後,因為其他的事務更新了資料,而被讀取。相反可重複讀,後續的讀取不能讀取到另外一事務提交的更新資料。

幻讀:乙個事務讀取了幾條資訊之後,其他事務又增加的幾條資訊,然後在查詢中,發現又多了幾條資訊。

事務的四大特徵:acid,指的是原子性 一致性 隔離性 永續性。

mysql:預設隔離級別repeatable_read

oracle預設隔離級別read_commited

事務的傳播行為 :

事務的傳播行為用於解決,兩個被事務管理的方法之間相互呼叫的問題。

事務傳播,一共分為七種,主要分為三種。

第一種,支援當前事務,a呼叫b,如果a存在,那麼a和b處於同乙個事務。

第二種,不支援當前事務,a呼叫b,如果a存在,那麼b不會和a處於同乙個事務。

第三種,巢狀事務,只對datasourcetransactionmanger有效,允許在同乙個事務設定儲存點,回滾儲存點。

面試題目:required requores_new nested

required,只有乙個事務。

requires_new,存在兩個事務,如果事務存在,掛起事務,重新又開啟乙個新的事務。

nested,巢狀事務,事務可以設定儲存點,回滾到儲存點,選擇提交或回顧。

判斷是否有儲存點,判斷事務是否結束,判斷當前事務是否開啟了乙個新的事務,判斷事務是否只能回滾,設定事務是否回滾。

trycatch()finally
三個事務超級介面之間的關係:

1.首先使用者定義事務定義資訊

2.根據使用者定義資訊,通過事務管理器進行管理。

3.在事務執行過程中,任何時間都可以用transactionstatus來了解事務執行狀態。

傳統的程式設計式事務管理。

宣告式事務管理,基於xml方式,基於註解方式。

第五章 Spring的事務管理

5.2宣告式事務管 spring的事務管理可以通過兩種方式來實現,一種是基於xml的方式,另一種是基於annotation的方式。5.2.1基於xml方式的宣告式事務 在eclipse中,建立乙個名為test1008的web專案,在專案的lib目錄下匯入chapter04專案中的所有jar包,並將a...

mysql第三天 事務

my.ini 可選引數有 read uncommitted,read committed,repeatable read,serializable.mysqld transaction isolation repeatable read當前session select tx isolation se...

Spring學習第三天

1.在spring配置檔案中物件名和ref id 的id名相同時使用自動注入,可以不配置property 2.兩種配置方法 2.1在中通過autowire 配置,只對這個bean生效 2.2在中通過default autowire 配置,表明當前檔案所有bean都是全域性配置內容 3.autowir...