我一直在閱讀Nhibernate一段時間,並一直在嘗試將它用於我正在實施的網站。我讀了關於NHibernate最佳實踐的the article by Billy McCafferty,但我沒有看到任何跡象表明哪裏是處理交易的最佳位置。NHibernate交易最佳實踐
我想將該代碼放入數據訪問對象(DAO),但我不知道如何處理使用多個DAO的情況。將事務代碼放入NHibernate應用程序的最佳位置是什麼?
我一直在閱讀Nhibernate一段時間,並一直在嘗試將它用於我正在實施的網站。我讀了關於NHibernate最佳實踐的the article by Billy McCafferty,但我沒有看到任何跡象表明哪裏是處理交易的最佳位置。NHibernate交易最佳實踐
我想將該代碼放入數據訪問對象(DAO),但我不知道如何處理使用多個DAO的情況。將事務代碼放入NHibernate應用程序的最佳位置是什麼?
這真的取決於你的環境。例如,我們在ASP.Net站點上使用Open-Session-In-View(Java鏈接,但模式與.Net相同)模式,並使用HttpModule來控制會話和事務。 HttpModule打開會話並在BeginRequest事件中啓動事務,然後提交事務並在EndRequest事件中關閉會話。
不同的環境和通信模式將導致不同的會話/事務管理策略。
關於NHibernate Users Group以及在網絡上的各種策略有很多討論。
基於Ayende,您可能需要爲所有人明確添加交易,甚至是搜索。請點擊這裏: http://nhprof.com/Learn/Alerts/DoNotUseImplicitTransactions
最簡單的方法是使用
http://rajputyh.blogspot.com/2011/02/nested-transaction-handling-with.html
描述的智能交易它採用流行的NHibernateSessionManager和一個簡單的類被寫入,以確保沒有「當你想你打開的事務」擔心哪些父邏輯和子邏輯正在處理事務。