由 ISessionFactory 建立,所有 ISession 共享。查詢順序:一級快取 → 二級快取 → 資料庫。內建 HashtableCache 功能有限、效能差,生產環境建議用第三方提供者。
適用場景:常用、資料量小、極少被外部系統修改的唯讀/少寫資料。
實作 NHibernate.Cache.ICacheProvider 介面。NHibernate Contrib 提供六種開源提供者:
<property name="cache.provider_class">NHibernate.Cache.HashtableCacheProvider</property>
<property name="cache.use_second_level_cache">true</property>
第三方提供者需額外設定(到期時間、物件上限等)。本文用內建 Hashtable 略過。
四種並發策略:
read-only:唯讀,可用於叢集read-write:讀寫nonstrict-read-write:非嚴格讀寫,不保證一致性transactional:交易型,可重複讀隔離級別兩種配置方式:
<cache usage="..." region="..."/>(須在 <id> 前)hibernate.cfg.xml 用 <class-cache>、<collection-cache>(建議,集中維護)<class-cache class="DomainModel.Entities.Customer,DomainModel" usage="read-write"/>
不同 Session 讀取同一實體:第一次查資料庫,第二次命中二級快取。

完成基礎配置與驗證。下篇將探討資料異動同步、查詢快取與快取管理。