1. 程式人生 > >spring的事務,詳解註解@Transactional

spring的事務,詳解註解@Transactional

事務管理是應用系統開發中必不可少的一部分。Spring 為事務管理提供了豐富的功能支援。

Spring 事務管理分為程式設計式和宣告式的兩種方式。


程式設計式事務指的是通過編碼方式實現事務,程式設計式事務管理使用TransactionTemplate或者直接使用底層的PlatformTransactionManager


宣告式事務管理建立在AOP之上的。其本質是對方法前後進行攔截,然後在目標方法開始之前建立或者加入一個事務,在執行完目標方法之後根據執行情況提交或者回滾事務。


顯然宣告式事務管理要優於程式設計式事務管理,這正是spring倡導的非侵入式的開發方式。宣告式事務管理使業務程式碼不受汙染,一個普通的POJO物件,只要加上註解就可以獲得完全的事務支援。和程式設計式事務相比,宣告式事務

唯一不足地方是,後者的最細粒度只能作用到方法級別,無法做到像程式設計式事務那樣可以作用到程式碼塊級別。但是即便有這樣的需求,也存在很多變通的方法,比如,可以將需要進行事務管理的程式碼塊獨立為方法等等。

宣告式事務有兩種方式,一種是基於tx和aop名字空間的xml配置檔案,另一種就是基於@Transactional註解

需要明確幾點:
  預設配置下 Spring 只會回滾執行時、未檢查異常(繼承自 RuntimeException 的異常)或者 Error。
  @Transactional 註解只能應用到 public 方法才有效。