2012-07-31 28 views
1

我明白,NHibernate的二級緩存工作在SessionFactory級別。我在我的NHibernate配置中使用連接提供程序來處理我的多租戶環境。我想知道二級緩存如何與連接提供者交互。也就是說,智能地爲每個單獨的連接字符串維護一個緩存,還是所有連接都共享相同的緩存?NHibernate的二級緩存如何與連接提供者一起工作?

顯然共享相同的緩存是一個巨大的禁忌,因爲相同的查詢將基於它所擊中的數據庫返回不同的結果。

回答

0

二級緩存的生命期與會話工廠有關,而不是與單個會話相關聯。一旦一個實體通過其唯一的ID進行加載並且二級緩存處於活動狀態,則該實體可用於(相同會話工廠的)所有其他會話。

所以第二級只能通過同一會話工廠的會話。

請看First and Second Level caching in NHibernate瞭解更多詳情

+0

謝謝。我已經閱讀過那篇文章,但由於它沒有具體提及連接提供商,所以我希望可能會有例外。不幸的是連接提供者似乎完全不符合二級緩存因此。 – joshuapoehls 2012-07-31 17:22:51

+0

是的,同樣能夠在nhibernate分析器中看到。它只能監視會話的通話。 – GSerjo 2012-07-31 17:32:54