sptring事務

一、事務定義是做什麼用的?

告訴管理者需要對業務進行什麼事務框架

二、事務定義的幾種方式?可以定義些什麼?

  1. xml2、註解方式。@Transactional

定義只讀,傳播行爲,發生異常回滾,超時回滾

三、隔離級別:

事務隔離級別,即事務工作之間的隔離程度,數據之間的可互訪性

參考來源:https://www.cnblogs.com/WJ-163/p/6023054.html

Read uncommitted<Read committed<Repeatable read<Serializable

https://images2015.cnblogs.com/blog/903715/201611/903715-20161102150430955-492049629.png

. ISOLATION_READ_UNCOMMITTED這是事務最低的隔離級別,它充許令外一個事務可以看到這個事務未提交的數據。
      這種隔離級別會產生髒讀,不可重複讀和幻像讀。
ISOLATION_READ_COMMITTED保證一個事務修改的數據提交後才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的數據
ISOLATION_REPEATABLE_READ這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。
      它除了保證一個事務不能讀取另一個事務未提交的數據外,還保證了避免下面的情況產生(不可重複讀)
ISOLATION_SERIALIZABLE這是花費最高代價但是最可靠的事務隔離級別。事務被處理爲順序執行。
      除了防止髒讀,不可重複讀外,還避免了幻像讀。 

 

四、7種傳播行爲

1、PROPAGATION_REQUIRED:當前有事務加入事務,否則創建一個新的事務。該設置是最常用的設置。

2、PROPAGATION_SUPPORTS:支持當前事務,有事務加入沒有則非事務運行

3、PROPAGATION_MANDATORY:支持當前事務,如果當前存在事務,就加入該事務,如果當前不存在事務,就拋出異常。

4、PROPAGATION_REQUIRES_NEW:無論當前存不存在事務,都創建新事務。

5、PROPAGATION_NOT_SUPPORTED:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

6、PROPAGATION_NEVER:以非事務方式執行,如果當前存在事務,則拋出異常。

7、PROPAGATION_NESTED:若當前存在事務,嵌套事務。如果當前沒有,則執行與PROPAGATION_REQUIRED類似的操作

五、其他

1.事務切面可以定義在那些層?

 定義在Service層

2.TransactionManager會有很多種嗎?

事務管理器可能會有多種:jdbc,mybatis、hibernate、jpa

3.什麼是本地事務?什麼是分佈式事務?

本地事務就是數據庫事務,只有一個數據源時,即本地事務,多個數據源即是分佈式事務

4.各種方式的事務邏輯是一樣的嗎?

不是,是有區別的。

5.我們在代碼中應用事務管理的方式是統一的嗎?

是spring裏的方式是統一的,管理控制一樣,xml和註解方式的區別是實現類Bean不一樣

6.架構spring事務管理建模

單一數據源:

分佈式事務:

7.如何讓事務應用者(框架使用者)對這些變化透明?

答:抽象,面向接口編程,策略模式。 PlatformTransationManager。

8.如何表示用戶的事務定義?

答:TransationDefinition

9.如何表示開啓的事務?

答:TransationStatus。

讀數據源事務管理的源碼時,需要驗證三點:1、是否把連接放到了線程上下文,3是否是同一個連接,3、查看事務的傳播

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章