標籤:
今天繼續深入學習SPring事務,發現網上很多文章都是很相似的轉載沒多少價值,就覺得更有必要把這個主題深入下去,先是摘錄那些對自己有用的觀點,後期再結合源碼進行全面的整理。
Spring提供了許多內建交易管理員實現,常用的有以下幾種:
- DataSourceTransactionManager:位於org.springframework.jdbc.datasource包中,資料來源交易管理員,提供對單個javax.sql.DataSource交易管理,用於Spring JDBC抽象架構、iBATIS架構的交易管理;
- HibernateTransactionManager:位於org.springframework.orm.hibernate3或者hibernate4包中,提供對單個org.hibernate.SessionFactory事務支援,用於整合Hibernate架構時的交易管理;該交易管理員只支援Hibernate3+版本,且Spring3.0+版本只支援Hibernate 3.2+版本;
- JtaTransactionManager:位於org.springframework.transaction.jta包中,提供對分散式交易管理的支援,並將交易管理委託給Java EE應用伺服器交易管理員;
- 基於 TransactionDefinition、PlatformTransactionManager、TransactionStatus 編程式交易管理是 Spring 提供的最原始的方式,通常我們不會這麼寫,但是瞭解這種方式對理解 Spring 交易管理的本質有很大作用。
- 基於 TransactionTemplate 的編程式交易管理是對上一種方式的封裝,使得編碼更簡單、清晰。
- 基於 TransactionInterceptor 的聲明式事務是 Spring 聲明式事務的基礎,通常也不建議使用這種方式,但是與前面一樣,瞭解這種方式對理解 Spring 聲明式事務有很大作用。
- 基於 TransactionProxyFactoryBean 的聲明式事務是上中方式的改進版本,簡化的設定檔的書寫,這是 Spring 早期推薦的聲明式交易管理方式,但是在 Spring 2.0 中已經不推薦了。
- 基於 <tx> 和 <aop> 命名空間的聲明式交易管理是目前推薦的方式,其最大特點是與 Spring AOP 結合緊密,可以充分利用切點運算式的強大支援,使得管理事務更加靈活。
- 基於 @Transactional 的方式將聲明式交易管理簡化到了極致。開發人員只需在設定檔中加上一行啟用相關後處理 Bean 的配置,然後在需要實施交易管理的方法或者類上使用 @Transactional 指定事務規則即可實現交易管理,而且功能也不必其他方式遜色。
摘自:http://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/
2015第24周二Spring事務2