Transactional作用和事務

2021-10-08 10:36:15 字數 1381 閱讀 4817

使用這個註解的類或者方法表示該類裡面的所有方法或者這個方法的事務由spring處理,來保證事務的原子性,即是方法裡面對資料庫操作,如果失敗則spring負責回滾操作,成功則提交操作。

@transactional 可以作用於介面、介面方法、類以及類方法上。當作用於類上時,該類的所有 public 方法將都具有該型別的事務屬性,同時,我們也可以在方法級別使用該標註來覆蓋類級別的定義。

@transactional 註解應該只被應用到 public 方法上,如果你在 protected、private 或者預設可見性的方法上使用 @transactional 註解,這將被忽略,也不會丟擲任何異常。

@transactional屬性

value

string

可選的限定描述符,指定使用的事務管理器

propagation

enum: propagation

可選的事務傳播行為設定

isolation

enum: isolation

可選的事務隔離級別設定

readonly

boolean

讀寫或唯讀事務,預設讀寫

timeout

int (in seconds granularity)

事務超時時間設定

rollbackfor

class物件陣列,必須繼承自throwable

導致事務回滾的異常類陣列

rollbackforclassname

類名陣列,必須繼承自throwable

導致事務回滾的異常類名字陣列

norollbackfor

class物件陣列,必須繼承自throwable

不會導致事務回滾的異常類陣列

norollbackforclassname

類名陣列,必須繼承自throwable

不會導致事務回滾的異常類名字陣列

順帶提及事物(**

事物是乙個整體,結果就兩種(成功或者失敗)

要麼全部成功(提交),要麼全部失敗(回滾),就算成功一部分也要(回滾)

事物的四個特性

原子性:對資料進行操作的時候,要麼全都執行,要麼全都不執行。

一致性:和原子性是分不開的,事務執行成功,說明全部都執行了,那麼就使資料庫從乙個一致性狀態變到另乙個一致性狀了。

隔離性: 乙個事務的執行不能被其他事務干擾

持續性: 事務一旦提交成功,那麼資料庫裡的資料就會永久性的改變。

1.把一條資料插入到倆張表的時候,就要用到事務了。

資料是 data 表示。

如果 data在插入第一張表的時候成功了,在插入第二張表的時候失敗了,怎麼辦?

要麼保證全部成功(提交),要麼就回滾(一條也別成功)。才能保證資料的準確性。

transactional作用和事務

使用這個註解的類或者方法表示該類裡面的所有方法或者這個方法的事務由spring處理,來保證事務的原子性,即是方法裡面對資料庫操作,如果失敗則spring負責回滾操作,成功則提交操作。transactional 可以作用於介面 介面方法 類以及類方法上。當作用於類上時,該類的所有 public 方法將...

Transactional事務不起作用原因補充

今天,使用 transactional,但是事務卻不起作用,配置確定配置成功,在網上查詢資料,在每個每個原因都試了之後仍然無效,最終發現,原來他們都漏了乙個原因,而我正好是這個原因。因為spring容器和spring mvc是父子容器,spring容器會先載入,如果此時掃瞄了controller,但...

Transactional不起作用如何排查問題。

按照以下幾個步驟逐一確認 1 首先要看資料庫本身對應的庫 表所設定的引擎是什麼。myisam不支援事務,如果需要,則必須改為innnodb。2 transactional所註解的方法是否為public 3 transactional所註解的方法所在的類,是否已經被註解 service或 compon...