NHibernate, Кэширование и пользовательские запросы SQL - PullRequest
0 голосов
/ 01 марта 2012

Мы используем NHibernate с Memcache в качестве кэша второго уровня. Иногда возникает необходимость в более сложных запросах или массовых операциях запросов. Из книги Nhibernate в действии они рекомендуют следующее:

"Мы считаем, что ORM не подходит для операций массового обновления (или массового удаления). Если у вас есть такой пример использования, другая стратегия почти всегда лучше: вызвать сохраненный процедуры в базе данных, или использовать прямые операторы SQL UPDATE и DELETE для этого особый вариант использования. "

Меня беспокоит то, что запросы к базовой базе данных не отражаются в кеше (по крайней мере, до истечения срока действия кеша), и мне было интересно, кто-нибудь придумал какие-нибудь эффективные стратегии для смешивания и сопоставления NHibernate с пользовательскими операторами SQL? *

Есть ли способ заставить, скажем, массовый оператор Update (выполненный с помощью пользовательского sql) отразить в кэше второго уровня? Мне известно о возможности ручного выселения, но это удаляет элементы из кэша и, следовательно, увеличивает попадания в базу данных.

Есть ли у сообщества какие-либо решения, которые оказались эффективными в решении этой проблемы?

1 Ответ

0 голосов
/ 31 марта 2012

Насколько я знаю, нет способа поддерживать кэш 2-го уровня в актуальном состоянии с помощью массовых обновлений.Но вы можете частично выселить кеш, как описано в: http://www.nhforge.org/doc/nh/en/index.html#performance-sessioncache.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...