spring.net + nhibernate 多數據庫的支持,以及跨數據庫的事物處理的討論

現在項目基本都是多數據庫的數據存儲方式,但sh架構的對多數據庫架構的支持好像沒發現什麼好的解決方案。尤其採用了spring.net的事物aop後,感覺對多數據庫的事物處理更費勁。可能是本人水平太低吧。

 

目前項目中,對多數據數據庫的支持,就是每一個數據庫配置相應的sessionFactory、transactionMananger與transactionInterceptor。在dao層實現3個對象的注入。可是此方式並不能實現跨數據的事物處理。這可是大問題。爲此,索性不用spring.net提供的事物處理模塊,或對於跨數據庫採用自己的事物處理方式。其實spring.net的事物處理是採用aop方式,那何不項目中自己寫一個事物aop實現多數據庫的事物支持以及跨數據庫的事物處理呢?

 

實現的代碼就不貼了,原理如下:

 

1.  創建一個TransactionOptionAttribute事物選擇類繼承自Attribute

     TransactionOptionAttribute類中關聯System.Transaction的TransactionScopeOption枚舉

 

2.  創建一個TransactionAdvice事物建議繼承IMethodInterceptor

 

     根據TransactionOptionAttribute的事物枚舉值創建System.Transaction的TransactionScope的對象實現跨數據庫的事物處理

 

3. 給客戶端的方法添加TransactionOption的事物聲明。

 

4. 別忘了,在系統中啓動分佈式事務處理的服務。

 

這個是個比較土鱉的方式來實現對支持多數據庫以及事物的支持。但感覺還實用,呵呵~

發佈了35 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章