[NHibernate]緩衝(NHibernate.Caches)

來源:互聯網
上載者:User

標籤:style   blog   class   code   c   color   

系列文章

[Nhibernate]體繫結構

[NHibernate]ISessionFactory配置

[NHibernate]持久化類(Persistent Classes)

[NHibernate]O/R Mapping基礎

[NHibernate]集合類(Collections)映射 

[NHibernate]關聯映射

[NHibernate]Parent/Child

什麼是NHibernate.Caches?

NHibernate.Caches是NHibernate的附加軟體,它是Kevin Williams(aka k-dub)貢獻的。緩衝是一個儲存實體的地點(在首次載入時);一旦進入緩衝,能夠取得它們,而無需(再次)查詢的背景儲存(資料庫)。這意味著它們能更快的載入(或重新載入)。

NHibernate session有一個內部的(一級)緩衝,存放著它的實體。這些緩衝沒有共用,因此session被銷毀時它的緩衝也被銷毀了。NHibernate提供了二級緩衝系統;它在SessionFactory層級工作。因此它被同一個SessionFactory產生的session共用。

使用每個請求(request)一個session模式,很多Session可以並發的訪問同一個實體,而不用每次都訪問資料庫,因此效能獲得了提升。

貢獻者使得在NHibernate中使用不同的緩衝提供者成為可能:

  • NHibernate.Caches.Prevalence使得使用底層的Bamboo.Prevalence實現作為緩衝提供者成為可能。開啟檔案Bamboo.Prevalence.license.txt可以看到它的許可資訊,你也可以訪問它的網站。
  • NHibernate.Caches.SysCache使得底層的System.Web.Caching.Cache實現作為緩衝提供者成為可能。這意味著你可以依賴ASP.NET的緩衝特性來理解它是怎麼工作的。要得到更多的資訊,可以閱讀CachingApplicationData(MSDN)
如何使用?

這裡是在NHibernate中啟用二級緩衝的步驟:

  • 選擇需要使用的緩衝提供者並且拷貝它的程式集到你的程式集路徑(NHibernate.Caches.Prevalence.dll或者NHibernate.Caches.SysCache.dll)
  • 為了表明使用哪種緩衝提供者,在NHibernate設定檔中(可以在YourAssembly.exe.config或者web.config或者.cfg.xml檔案)添加如下內容:
1 <add key="hibernate.cache.provider_class" value="XXX" />(1)2 <add key="relativeExpiration" value="120" />(2)

(1)"xxx"可以是"NHibernate.Caches.Prevalence.PrevalenceCacheProvider,NHibernate.Caches.Prevalence"或者"NHibernate.Caches.SysCache.SysCacheProvider,NHibernate.Caches.SysCache"。
(2)relativeExpiration的值是你希望緩衝每個實體的秒數(這裡是兩分鐘)。

添加<cache usage="read-write|nonstrict-read-write|read-only"/>(在<class>後面)到你需要緩衝的實體映射中,它也為集合(bag,list,map,set,.....)提供支援。

注意:緩衝不會知道另一個進程儲存的實體的變化(儘管配置了快取資料的到期時間)。當緩衝被建立在SessionFactory層級,它們會和SessionFactory執行個體一起被銷毀,所以必須在你需要緩衝的時候,保持SessionFactory存在。

總結

本文主要講了如何在nhibernate中使用緩衝。有個需要注意的地方:

緩衝不會知道另一個進程儲存的實體的變化(儘管配置了快取資料的到期時間)。當緩衝被建立在SessionFactory層級,它們會和SessionFactory執行個體一起被銷毀,所以必須在你需要緩衝的時候,保持SessionFactory存在。

例子在後續文章中提供,這裡只是學習文檔內容。

本文來自《NHibernate 中文文檔》

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.