面試突擊82:SpringBoot 中如何操作事務?

在 Spring Boot 中操作事務有兩種方式:編程式事務或聲明式事務,接下來我們一起來看二者的具體實現。

1.編程式事務

在 Spring Boot 中實現編程式事務又有兩種實現方法:

  1. 使用 TransactionTemplate 對象實現編程式事務;
  2. 使用更加底層的 TransactionManager 對象實現編程式事務。

它們的具體實現程式碼如下。

1.1 TransactionTemplate 使用

要使用 TransactionTemplate 對象需要先將 TransactionTemplate 注入到當前類中 ,然後再使用它提供的 execute 方法執行事務並返回相應的執行結果,如果程式在執行途中出現了異常,那麼就可以使用程式碼手動回滾事務,具體實現程式碼如下:
image.png

1.2 TransactionManager 使用

TransactionManager 實現編程式事務相對麻煩一點,它需要使用兩個對象:TransactionManager 的子類,加上 TransactionDefinition 事務定義對象,再通過調用 TransactionManager 的 getTransaction 獲取並開啟事務,然後調用 TransactionManager 提供的 commit 方法提交事務,或使用它的另一個方法 rollback 回滾事務,它的具體實現程式碼如下:
image.png
從上述程式碼可以看出,使用編程式事務更加靈活,但寫法比較麻煩。

2.聲明式事務

聲明式事務的實現比較簡單,只需要在方法上或類上添加 @Transactional 註解即可,當加入了 @Transactional 註解就可以實現在方法執行前,自動開啟事務;在方法成功執行完,自動提交事務;如果方法在執行期間,出現了異常,那麼它會自動回滾事務。
它的具體使用如下:
image.png
當然,@Transactional 支援很多參數的設置,它的參數設置列表如下:
image.png
參數的設置方法如下:
image.png

總結

本文我們介紹了兩種事務的實現方式:編程式事務或聲明式事務。其中編程式事務又分為兩種實現:使用 TransactionTemplate 對象或更加底層的 TransactionManager 對象分別實現編程式事務,它們的優點是靈活性更高,可以在任何程式碼片段上添加事務;而聲明式事務的實現更加簡單,只需要在類或方法上添加 @Transactional 註解即可實現事務的自動開啟和提交(以及回滾)。

是非審之於己,毀譽聽之於人,得失安之於數。

公眾號:Java面試真題解析

面試合集://gitee.com/mydb/interview

Tags: