日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot学习笔记(8):事物处理

發布時間:2025/3/15 javascript 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot学习笔记(8):事物处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SpringBoot學習筆記(8):事物處理

快速入門

  在傳統的JDBC事務代碼開發過程中,業務代碼只有一部分,大部分都是與JDBC有關的功能代碼,比如數據庫的獲取與關閉以及事務的提交與回滾、大量的try..catch..finally語句。

  Spring Boot利用AOP為我們提供了一個數據庫事務的約定流程。通過這個約定流程就可以減少大量的冗余代碼和一些沒必要的異常捕獲語句,讓開發者更加集中于業務的開發,而不是反復編寫如數據庫的獲取與關閉以及事務的提交與回滾、大量的try..catch..finally語句等。即只要我們遵循約定,就可以把自己開發的代碼織入約定的流程中

  下圖為Spring數據庫事務約定:

  

聲明式事務

  通過使用@Transactional標注告訴Spring在什么地方啟用數據庫事務功能。這個注解可以標注在類或者方法上,標注在類上表示這個類所有功能非靜態的方法都啟用事務功能

  在Spring Boot中,當我們使用了spring-boot-starter-jdbc或spring-boot-starter-data-jpa依賴的時候,框架會自動默認分別注入DataSourceTransactionManager或JpaTransactionManager。所以我們不需要任何額外配置就可以用@Transactional注解進行事務的使用。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId> </dependency>

?

示例

添加注解1:@EnableTransactionManagement啟動事物管理器

@SpringBootApplication @EnableTransactionManagement public class MsSupplyAndSaleApplication {public static void main(String[] args) {SpringApplication.run(MsSupplyAndSaleApplication.class, args);} }

添加注解2:@Transaction在方法或類上啟動事物處理

@Service public class GoodsService {@Autowiredprivate GoodsMapper goodsMapper;@Transactionalpublic void addGoods(Goods goods){goodsMapper.addGoods(goods);}//.... }

?

隔離級別

  隔離級別是指若干個并發的事務之間的隔離程度,與我們開發時候主要相關的場景包括:臟讀取、重復讀、幻讀。

  • DEFAULT:這是默認值,表示使用底層數據庫的默認隔離級別。對大部分數據庫而言,通常這值就是:READ_COMMITTED。
  • READ_UNCOMMITTED:該隔離級別表示一個事務可以讀取另一個事務修改但還沒有提交的數據。該級別不能防止臟讀和不可重復讀,因此很少使用該隔離級別。
  • READ_COMMITTED:該隔離級別表示一個事務只能讀取另一個事務已經提交的數據。該級別可以防止臟讀,這也是大多數情況下的推薦值。
  • REPEATABLE_READ:該隔離級別表示一個事務在整個過程中可以多次重復執行某個查詢,并且每次返回的記錄都相同。即使在多次查詢之間有新增的數據滿足該查詢,這些新增的記錄也會被忽略。該級別可以防止臟讀和不可重復讀。
  • SERIALIZABLE:所有的事務依次逐個執行,這樣事務之間就完全不可能產生干擾,也就是說,該級別可以防止臟讀、不可重復讀以及幻讀。但是這將嚴重影響程序的性能。通常情況下也不會用到該級別。

指定事物的隔離級別:

@Transactional(isolation = Isolation.DEFAULT)

傳播行為

  所謂事務的傳播行為是指,如果在開始當前事務之前,一個事務上下文已經存在,此時有若干選項可以指定一個事務性方法的執行行為。

  • REQUIRED:如果當前存在事務,則加入該事務;如果當前沒有事務,則創建一個新的事務。
  • SUPPORTS:如果當前存在事務,則加入該事務;如果當前沒有事務,則以非事務的方式繼續運行。
  • MANDATORY:如果當前存在事務,則加入該事務;如果當前沒有事務,則拋出異常。
  • REQUIRES_NEW:創建一個新的事務,如果當前存在事務,則把當前事務掛起。
  • NOT_SUPPORTED:以非事務方式運行,如果當前存在事務,則把當前事務掛起。
  • NEVER:以非事務方式運行,如果當前存在事務,則拋出異常。
  • NESTED:如果當前存在事務,則創建一個事務作為當前事務的嵌套事務來運行;如果當前沒有事務,則該取值等價于REQUIRED。

指定事物的傳播行為:

@Transactional(propagation = Propagation.REQUIRED)

  

轉載于:https://www.cnblogs.com/MrSaver/p/8723559.html

總結

以上是生活随笔為你收集整理的SpringBoot学习笔记(8):事物处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。