Transactional事務原理

2021-09-13 18:40:42 字數 1647 閱讀 8916

這個是spring的宣告式事務管理,基於aop程式設計,是一種動態**模式。疑問

1.這個註解是怎麼生效的?  配置了transactional註解後,spring容器初始化bean的時候,給他生成**類,執行的時候控制事務的提交。 2.多個資料庫的事務怎麼辦? 你需要在註解的地方指明資料來源@transactional("order")

其他注意事項

首先,事務管理只會對runtimeexception及其之類的異常回滾資料,也就是非受檢異常。其他異常比如error,是jvm錯誤導致的致命錯誤,其他exception及其子類等受檢異常,編譯器會檢查,需要程式人員處理掉。

其次,內部類呼叫@transactional的方法,也不會有事務,只有來自外部的方法呼叫才會被aop**捕獲。原因是,本質上是乙個aop,生成這個類的**類,呼叫自身類的方法是不能觸發。

事務傳播屬性,前面兩個用的比較多

@transactional(propagation=propagation.required)//如果有事務,那麼加入事務,沒有的話新建立乙個

@transactional(propagation=propagation.supports)//有就用事務,沒有就算了

@transactional(propagation=propagation.not_supported)//有事務也不用

@transactional(propagation=propagation.requireds_new)//不管是否存在事務,都建立乙個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務

@transactional(propagation=propagation.mandatory)//必須在乙個已有的事務中執行,否則丟擲異常

@transactional(propagation=propagation.never)//不能在乙個事務中執行,就是當前必須沒有事務,否則丟擲異常

@transactional(propagation=propagation.nested)//如果乙個活動的事務存在,則執行在乙個巢狀的事務中,如果沒有活動的事務,則按照required屬性執行,它使用乙個單獨的事務。這個書屋擁有多個回滾的儲存點,內部事務的回滾不會對外部事務造成影響,它只對datasource transactionmanager事務管理器起效。

@transactional(propagation=propagation.required,readonly=true)//唯讀,不能更新,刪除

@transactional(propagation=propagation.required,timeout=30)//超時30秒@transactional(propagation=propagation.required,isolation=isolation.default)//資料庫隔離級別

**的選擇

通過元素的 「proxy-target-class」 屬性值來控制是基於介面的還是基於類的**被建立。如果 「proxy-target-class」 屬值被設定為 「true」,那麼基於類的**將起作用(這時需要cglib庫cglib.jar在classpath中)。如果 「proxy-target-class」 屬值被設定為 「false」 或者這個屬性被省略,那麼標準的jdk基於介面的**將起作用。

Transactional事務幾點注意

這裡面有幾點需要大家留意 a.乙個功能是否要事務,必須納入設計 編碼考慮。不能僅僅完成了基本功能就ok。b.如果加了事務,必須做好開發環境測試 測試環境也盡量觸發異常 測試回滾 確保事務生效。c.以下列了事務使用過程的注意事項,請大家留意。1.不要在介面上宣告 transactional 而要在具體...

Transactional事務幾點注意

這裡面有幾點需要大家留意 a.乙個功能是否要事務,必須納入設計 編碼考慮。不能僅僅完成了基本功能就ok。b.如果加了事務,必須做好開發環境測試 測試環境也盡量觸發異常 測試回滾 確保事務生效。c.以下列了事務使用過程的注意事項,請大家留意。1.不要在介面上宣告 transactional 而要在具體...

Transactional事務幾點注意

這裡面有幾點需要大家留意 a.乙個功能是否要事務,必須納入設計 編碼考慮。不能僅僅完成了基本功能就ok。b.如果加了事務,必須做好開發環境測試 測試環境也盡量觸發異常 測試回滾 確保事務生效。c.以下列了事務使用過程的注意事項,請大家留意。1.不要在介面上宣告 transactional 而要在具體...