2009-06-13 114 views
7

我目前使用自定義開發的ORM,並計劃遷移到nhibernate。NHibernate緩存過期

目前,我使用L1會話級別緩存和L2-應用級別緩存。

無論何時L1緩存從L2緩存請求對象,它都會檢查自上次加載後修改的數據庫,並且只有在修改後才加載。

我可以用NHibernate來做到這一點嗎?總之,緩存不會傷害我,因爲它總是獲取最新的數據,並節省了對象創建和加載時間。

回答

14

恕我直言,如果它需要擊中數據庫,那麼擁有二級緩存毫無意義。這正是整個緩存的重點,儘可能避免擊中數據庫。我們沒有像您所描述的那樣執行緩存策略,但NHibernate L2緩存完全可插入,因此您可以實施它。但是,我不會,因爲我上面提到的原因。

只有當其他應用程序或其他DAL碰到NHibernate以外的同一個數據庫時,才能獲取過期數據。如果是這種情況,則可以使用SysCache2實現,該實現在內部使用SqlCacheDependencies來在底層表中的數據更改時使緩存區域無效。

如果它是在農場中運行的單個應用程序,請使用Velocity provider

如果只有一個NHibernate應用程序實例擊中數據庫,any cache strategy將會這樣做,您不必擔心獲取過時的數據。

參見:

0

NHibernate的構建,在1級高速緩存,因爲它獨自在站也不是很複雜-proc本質上。所以你肯定需要有一個二級緩存來增強NHibernate應用的性能。它減少了訪問數據庫的時間。有很多第三方集成可用於插入NHibernate二級緩存。 NCache是一個很好的例子,它不需要更改代碼。從這裏閱讀更多,

http://www.alachisoft.com/ncache/nhibernate-l2cache-index.html