NHibernate и Memcached - Учебник / Пример - PullRequest
10 голосов
/ 20 апреля 2011

У меня установлен сервер Membase с настройкой пары блоков, и я искал хороший учебник или пример того, как использовать его в качестве кэша 2-го уровня с NHibernate.

Меня интересует, какой примерКонфигурация будет выглядеть так, и если мне потребуется что-то сделать в коде или я смогу справиться со всем этим из моих отображений NHibernate.

Спасибо за любую помощь.

1 Ответ

14 голосов
/ 23 апреля 2011

В ваших файлах сопоставления вам нужно будет включить свойство:

<class name="ClassName" table="Table">
   <cache usage="read-write" />
   <!-- SNIP -->
</class>

Опции: чтение-запись (чтение с фиксацией изоляции), нестрогое чтение-запись (объекты, которые пишутся редко, повышают производительностьно повышается вероятность устаревших данных) или только для чтения (данные, которые никогда не меняются).

Затем в вашей веб-конфигурации (или приложении) вам нужен раздел для настройки memcached:

<configuration>
  <configSections>
    <!-- SNIP -->
    <section name="memcache" type="NHibernate.Caches.MemCache.MemCacheSectionHandler,NHibernate.Caches.MemCache" />
  </configSections>
  <memcache>
    <memcached host="127.0.0.1" port="11211" weight="2" />
  </memcache>
  <!-- SNIP -->
</configuration>

Наконец, в вашей фабричной конфигурации сеанса обязательно используйте:

  <hibernate-configuration>
    <session-factory>
      <!-- SNIP -->

      <property name="expiration">300</property> <!--memcache uses seconds -->
      <property name="cache.provider_class">NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache</property>
      <property name="cache.use_second_level_cache">true</property>
      <property name="cache.use_query_cache">false</property> <!-- true if you want to cache query results -->
    </session-factory>
  </hibernate-configuration>

Конечно, вам нужно скачать и ссылаться на dll из соответствующей версии NHibernate.Caches , чтобы получить правильного поставщика кеша.Memcached берет зависимость от ICSharpCode.SharpZipLib и Memcached.ClientLibrary (s / b включен в загрузку)

Если вы используете свободный NHibernate, в цепочке установки есть метод .Cache дляфабрика сеансов, которую вы можете использовать, хотя некоторые свойства необходимо установить вручную с помощью вызова .ExposeConfiguration.

...