1. 程式人生 > >springboot 2.0 教程-06-開啟事務管理

springboot 2.0 教程-06-開啟事務管理

閱讀原文:https://blog.bywind.cn/articles/2018/11/28/1543373589258.html
視訊教程:https://www.bilibili.com/video/av35595465
課程原始碼:https://github.com/ibywind/springboot-learn
關注公眾號 檢視更多技術乾貨
還可加群 , 眾多好基友在等你
mpjpg

springboot 書籍 PDF 下載

掃描關注上方公眾號
回覆關鍵字 boot
就可以下載這本書了
書籍的排版很好的,我自己也在看.大家可以一起交流哦
1_png

寫在前面

hello 大家好

歡迎大家收看御風大世界

本次課是

springboot 系列教程第6課

我將為大家演示

springboot 如何開啟資料庫事務管理

什麼是事務?

舉個簡單的例子

銀行轉賬

A轉出100

B轉入100

事務的作用就是

A , B 要麼同時成功,要麼同時失敗

不允許存在 中間狀態 (A沒損失, B卻收入了)

事務的幾個知識點

ACID指的是原子性(atomicity)、一致性(consistency)、隔離性(isolation)和永續性(durability)

原子性:操作這些指令時,要麼全部執行成功,要麼全部不執行。只要其中一個指令執行失敗,所有的指令都執行失敗,資料進行回滾,回到執行指令前的資料狀態。

一致性:事務的執行使資料從一個狀態轉換為另一個狀態,但是對於整個資料的完整性保持穩定。

隔離性:在該事務執行的過程中,無論發生的任何資料的改變都應該只存在於該事務之中,對外界不存在任何影響。只有在事務確定正確提交之後,才會顯示該事務對資料的改變。其他事務才能獲取到這些改變後的資料。

永續性:當事務正確完成後,它對於資料的改變是永久性的。

在多個事務操作的過程中

還需要 保證 事務的隔離級別

比如以下幾個例子 就是沒有 使用對應的隔離機制導致的

mysql事務的隔離級別

springboot事務管理

基於註解,很簡單的

在boot入口程式加一個 EnableTransactionManagement 的註解

就啟動事務管理器了

通常 我們會 把我們的 事務註解 放到 service impl 這一層

因為 DAO 都是單一功能 原子操作

而 某個 service方法 可能會用到

多個 Dao 方法 或者是 多個DAO 的 多個方法

來完成一個功能

我們把註解放到 service 實現類上

那麼整個 類的 操作 每一個方法 都會支援事務

spring 事務 存在 傳播行為 , 隔離級別 , 異常回滾等等

大家可以 去參看 這個 註解的 原始碼 , 裡面有很詳細的描述

我們可以把這個註解放到 類上 也可以放到 具體的方法上 .

他的級別是這樣的

方法級別 > 類級別 > 統一配置級別(通配級別)

具體某個方法的配置和上面演示的 類的配置 差不多

大家可以自己嘗試下

統一事務配置

我們實際的開發過程中

會有很多 service實現類

我們不可能 把 事務這樣一個 本可以統一規範的 約束

放到每一個類 甚至是 每一個方法中

我們之前做springmvc 的時候 用到的事務控制是這樣的

其主要是 通過spring AOP 切面技術

只要我們按照自己配置的 方法名稱通配

就可以實現 一次配置事務管理

而不必像 上文中講到的

一個類 一個方法上 加一個註解

我們知道

spring 利用xml 實現的事情

都可以改到 .java 檔案 來編碼實現的

我們定義一個註解

然後將我們的 事務管理器 引入進來

整體的一個實現程式碼是這樣的

通過這樣一個 切面 統一配置類

我們就實現了

類似之前 springmvc 時代

xml 檔案配置事務切面的 功能

結束語

如果大家對於這裡比較感興趣的話

可以去B站檢視我的視訊講解

https://space.bilibili.com/193580090/#/

或者是在 github下載原始碼

https://github.com/ibywind/springboot-learn