我的DTO有一個由我的數據庫使用的ID,通常是自動遞增的INT。一般來說,我的應用程序並不關心這個ID字段,它傾向於通過它們的Name屬性來查找DTO。這已經產生了這種方法在我的數據訪問層:nHibernate Session.Load屬性名稱
public T GetByName(string name)
{
return (T) Session
.CreateCriteria(typeof (T))
.Add(Expression.Eq("Name", name))
.UniqueResult();
}
現在,我已經注意到了,因爲這是我如何加載絕大多數我的DTO的是,NHibernate的不緩存結果。我已經能夠通過SQL Profiler觀察到,每次調用此方法都會導致數據庫往返,即使我確定在單元工作期間已經加載了這個特定對象(一個HTTP事務)。
此外,我讀到的是,當您調用.Load()時,nHibernate會將DTO緩存在第一級緩存中。
所以,我的問題是:有沒有辦法配置nHibernate把我的DTOs加載到第一級緩存後,這樣加載,還是我需要找到另一種方式來減少我的數據庫往返?
通過二級緩存配置確定緩存在二級緩存中的內容。在這種情況下,查詢結果緩存需要打開,因爲您實際上正在執行查詢來檢索對象。 – 2011-02-04 17:03:43