2009-11-23 57 views
0

我有一個客戶端服務器應用程序,服務器使用nhibernate。 我想知道我應該如何使用會話?每次打電話給 ?每個客戶端有 ? 單?正確使用nhibernate會話

其他方式?

以及如何保持會話緩存在服務器中? 並且我想知道會話是否線程安全?

回答

7

您應該爲每個工作單元使用一個會話。如果這包括多個操作,那就這樣吧。

使用session.BeginTransaction()來包裝工作單元並在所有項目完成後提交。

會話不是線程安全的,但會話工廠是(您肯定想要保留的)。

NHiberate爲數據提供了各種緩存選項,但會話是爲了使用和處置。

+0

有沒有辦法在會話處理後保持緩存? – 2009-11-25 10:52:01

+1

Ayende有一些關於如何在NHibernate中實現緩存的好鏈接。對於只讀對象(如查找表),如果經常閱讀它們,可以獲得很好的收益。否則,您的併發需求可能會阻止您保持數據緩存。它的一個它取決於一種問題。 Ayende的文章是http://ayende.com/Blog/archive/2009/04/24/nhibernate-2nd-level-cache.aspx – 2009-11-27 15:19:05

1

每個通話應該是通常的解決方案

3

通常每個請求完成一個。您可以創建HttpApplication,它在請求開始時打開會話,並在請求結束時關閉(example)。

1

對於會話生存期問題,確實沒有一個正確的答案。您可以使任何會話生存期工作,這取決於您的要求。會話不是線程安全的,但會話工廠是。

要保持緩存,你需要保持會話。保持高速緩存並將緩存保持正確,除了簡單的單用戶單一進程應用程序之外,很可能會遇到相當大的挑戰。