spring中的事務管理(三)

spring中的事務管理(三)


事務的隔離級別

        從理論上來說, 事務應該彼此完全隔離, 以避免併發事務所導致的問題. 然而,那樣會對性能產生極大的影響, 因爲事務必須按順序運行.

        在實際開發中, 爲了提升性能, 事務會以較低的隔離級別運行.

        事務的隔離級別可以通過隔離事務屬性指定

 

Spring支持的事務隔離級別


事務的隔離級別要得到底層數據庫引擎的支持, 而不是應用程序或者框架的支持.

Oracle 支持的 2 種事務隔離級別:READ_COMMITED , SERIALIZABLE

Mysql 支持 4 中事務隔離級別.

 

設置隔離事務屬性

用@Transactional 註解聲明式地管理事務時可以在 @Transactional 的 isolation 屬性中設置隔離級別.


在事務通知中, 可以在 <tx:method> 元素中指定隔離級別

 

設置回滾事務屬性

默認情況下只有未檢查異常(RuntimeException和Error類型的異常)會導致事務回滾. 而受檢查異常不會.

事務的回滾規則可以通過@Transactional 註解的 rollbackFor 和 noRollbackFor 屬性來定義. 這兩個屬性被聲明爲 Class[] 類型的, 因此可以爲這兩個屬性指定多個異常類.

rollbackFor:  遇到時必須進行回滾

noRollbackFor: 一組異常類,遇到時必須不回滾

 

在事務通知中, 可以在 <tx:method> 元素中指定回滾規則. 如果有不止一種異常, 用逗號分隔.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章