spring事務細節總結

2021-09-12 22:05:12 字數 1244 閱讀 2191

#########

事務細節:

#timeout:預設為 -1 超時,如果超出指定時間,事務將自動終止並回滾 (單位 : s )

#readonly:預設為 false 指定事務 唯讀,會大大增加執行效率,但是如果 事務中不止讀操作,還有其它增刪改操作,那麼

會報錯#

異常: 執行時異常(非檢查異常) 預設 事務都回滾, 而 編譯時異常(檢查異常) 預設是事務不回滾

#norollbackforclassname : 設定 出現異常時 哪些事務不會回滾

例: norollbackforclassname =

#norollbackfor : 和 norollbackforclassname 一樣的作用,只是設定時比它簡單

例: norollbackfor=

#rollbackforclassname : 和上面的作用相反,使出現異常時,哪些異常事務回滾

例: rollbackfor =

#rollbackfor :同上

例: rollbackfor =

#isolation :設定事務隔離級別(讀未提交,讀已提交,可重複讀,序列化)

例: isolation = isolation.read_uncommitted 讀未提交

例: isolation = isolation.read_committed 讀已提交

例: isolation = isolation.repeatable-read 可重複讀

#propagation :事務的傳播行為,當乙個事務方法被另乙個方法(事務方法或普通方法)呼叫的時候,

必須指定事務應該如何傳播

例: required 如果有事務在執行,當前的事務方法就在這個事務內執行,否則就自己開啟新的事務,並在自己的事務內執行

例: requires_new 當前方法必須開啟新的事務,並在它自己的事務內執行,如果有事務在執行,就將執行的事務掛起,執行這個新開啟的事務方法

例 supports 如果有事務執行,當前方法就在執行在這個事務內,否則可以不在這個事務內執行

例: not_supports 當前方法不應該執行在事務中,如果有執行的事務,就將執行的事務掛起,執行新的事務

例: mandatory 當前方法必須在事務內執行,如果沒有執行的事務,就丟擲異常

例: never 當前方法不應該執行在事務內,如果有執行的事務,就丟擲異常

例: nested 如果有事務執行,當前方法就在這個事務的巢狀事務內執行,否則就開啟新事務,並在自己的事務內執行

spring事務總結

1.spring中被標有 transactional註解 也就是事務 的方法不能夠自己呼叫自己。2.在同乙個service實現類中,不同的方法之間可以相互呼叫。3.spring框架的事務基礎架構 將預設地只在丟擲執行時和unchecked exceptions時才標識事務回滾。也就是說,當丟擲乙個 ...

spring 事務總結

tx是由aop實現的 aop的實現方式 1 方式 spring aop 1.jdk的基於介面方式 2.cglib的基於類的方式 修改位元組碼,加入extend 類?這兩種 方式 都存在父子關係,也跟日常生活中的 一樣。具體可以參考動態 模式 2 非 aspectj?這貨沒用 實現?有空看看cglib...

spring 事務總結

程式設計式事務 datasoucetransactionmanager 資料來源事務管理器 主要api 開啟事務,提交事務,回滾事務 宣告式事務 transaction 程式設計式事務封裝 aop動態 實現 常用屬性 rollbackfor 預設捕獲到error和runtimeexception 會...