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

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