Transactional註解屬性介紹

2021-10-09 20:04:08 字數 1998 閱讀 2031

事務管理在系統開發中是不可缺少的一部分,spring提供了很好事務管理機制,主要分為程式設計式事務和宣告式事務兩種。

程式設計式事務:是指在**中手動的管理事務的提交、回滾等操作,**侵入性比較強

宣告式事務:基於aop面向切面的,它將具體業務與事務處理部分解耦,**侵入性很低,所以在實際開發中宣告式事務用的比較多。宣告式事務也有兩種實現方式,是基於tx和aop的xml配置檔案方式,二種就是基於@transactional註解了。本文主要介紹@transactional

springboot不用單獨的去配置事務管理,直接在service層使用@transactional就可以。

@transactional 可以作用在介面、類、類方法

作用於類:當把@transactional 註解放在類上時,表示所有該類的public方法都配置相同的事務屬性資訊。

作用於方法:當類配置了@transactional,方法也配置了@transactional,方法的事務會覆蓋類的事務配置資訊。

propagation 代表事務的傳播行為,預設值為 propagation.required,其他的屬性資訊如下:

propagation.required:如果當前存在事務,則加入該事務,如果當前不存在事務,則建立乙個新的事務。( 也就是說如果a方法和b方法都新增了註解,在預設傳播模式下,a方法內部呼叫b方法,會把兩個方法的事務合併為乙個事務 )

propagation.supports:如果當前存在事務,則加入該事務;如果當前不存在事務,則以非事務的方式繼續執行。

propagation.mandatory:如果當前存在事務,則加入該事務;如果當前不存在事務,則丟擲異常。

propagation.requires_new:重新建立乙個新的事務,如果當前存在事務,暫停當前的事務。( 當類a中的 a 方法用預設propagation.required模式,類b中的 b方法加上採用 propagation.requires_new模式,然後在 a 方法中呼叫 b方法運算元據庫,然而 a方法丟擲異常後,b方法並沒有進行回滾,因為propagation.requires_new會暫停 a方法的事務 )

propagation.not_supported:以非事務的方式執行,如果當前存在事務,暫停當前的事務。

propagation.never:以非事務的方式執行,如果當前存在事務,則丟擲異常。

propagation.nested:和 propagation.required 效果一樣。

isolation :事務的隔離級別,預設值為isolation.default

isolation.default:使用底層資料庫預設的隔離級別。(mysql預設為可重複讀repeatable-read)

isolation.read_uncommitted(讀未提交)

isolation.read_committed(不可重複讀)

isolation.repeatable_read(可重複讀)

isolation.serializable(序列化)

timeout :事務的超時時間,預設值為 -1。如果超過該時間限制但事務還沒有完成,則自動回滾事務。

readonly :指定事務是否為唯讀事務,預設值為 false;為了忽略那些不需要事務的方法,比如讀取資料,可以設定 read-only 為 true。

rollbackfor :用於指定能夠觸發事務回滾的異常型別,可以指定多個異常型別。

norollbackfor:丟擲指定的異常型別,不回滾事務,也可以指定多個異常型別。

@transactional

(rollbackfor = exception.

class

,isolation = isolation.default)

Transactional註解初見

之前一直使用宣告式事務,切面程式設計的配置方式讓程式設計者忘記了事務的存在,一旦離開,發現這個事務還是蠻重要的 public inte ce userservice transactional public class userserviceimpl implements userservice p...

Transactional註解詳解

預設遇到throw new runtimeexception 會回滾 需要捕獲的throw new exception 不會回滾 指定回滾 transactional rollbackfor exception.class public void methodname 指定不回滾 transacti...

Transactional註解用法

1.事務隔離級別 隔離級別是指若干個併發的事務之間的隔離程度。transactiondefinition 介面中定義了五個表示隔離級別的常量 2.事務傳播行為 所謂事務的傳播行為是指,如果在開始當前事務之前,乙個事務上下文已經存在,此時有若干選項可以指定乙個事務性方法的執行行為。在transacti...