Nhibernate 2-й уровень кэша для новичка - PullRequest
0 голосов
/ 11 ноября 2010

Я пытаюсь разобраться с кэшированием 2-го уровня в свободном доступе в NHibernate. До сих пор я сделал следующее:

  1. Добавлена ​​ссылка на кеширование dll
  2. Добавлено следующее при создании фабрики сессий:

    c.SetProperty ("cache.provider_class", "NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache");

    c.SetProperty ("cache.use_second_level_cache", "true");

    c.SetProperty ("cache.use_query_cache", "true");

  3. Добавлен Cache.ReadWrite (); против всех сущностей, которые я хочу кэшировать в файле ClassMap, например

    открытый класс CountryMap: ClassMap { public CountryMap () { Таблица ( "Страна"); Id (x => x.CountryID); Карта (x => x.CountryName); Cache.ReadWrite (); } }

Теперь я предположил, что всякий раз, когда я пытаюсь получить сущность с Cache.ReadWrite () в отображении, он будет кешировать ее на время фабрики сессий (singleton). Однако, похоже, что это не так, поскольку база данных попадает при каждом запросе. Вот пара вопросов, которые у меня есть:

  • Что делает свойство CacheMode в сеансе? Мой сеанс длится в течение веб-запроса. Должен ли я установить это при создании сеанса, и если да, то как его установить?
  • Я где-то читал, что кеш не обновляется, если не сделан коммит. Я фиксирую данные только тогда, когда я вставляю / обновляю информацию в базе данных. Например, если у меня есть простая страница со списком стран, я бы взял все необходимые данные, но не зафиксировал бы данные, поскольку мне не нужно вносить какие-либо изменения. Означает ли это, что эти данные не будут кэшироваться? Я уверен, что прочитал это неправильно, поскольку это означало бы, что данные кэшируются только после добавления базы данных.

Буду признателен, если вы поможете. Спасибо

Ответы [ 2 ]

3 голосов
/ 11 ноября 2010

Здесь - очень хорошее объяснение для кэша второго уровня с nhibernate.

1 голос
/ 11 ноября 2010

Вы должны использовать транзакции для кэша 2-го уровня, который будет использоваться.

...