Ehcache и Hibernate - PullRequest
       7

Ehcache и Hibernate

1 голос
/ 19 октября 2011

У меня есть сценарий, в котором я отображаю данные в базе данных, которые часто меняются (изменяются внешним приложением) на веб-странице с использованием Spring MVC, чем-то похожей на приложение для мониторинга запасов.В настоящее время я использую поток демона, который запускается при запуске веб-контейнера и запрашивает базу данных каждые 45 секунд и сохраняет данные в объекте hashmap всего приложения.И веб-приложение считывает данные из hashmap (вместо базы данных) для отображения данных.

Я читал о сторонних API для кэширования, таких как Ehcache и OSCache .Я прочитал документацию по Ehcache и, похоже, я могу использовать технику кэширования запросов Hibernate вместо потока демона.

Теперь мой запрос, если я использую hibernate и включу кэширование запросов и установлю timetoidle на 45 секунд, получит данныев кеше автоматически обновляется, чтобы отразить последние данные в базе данных, или мне нужно принудительно обновить (снова запросить базу данных и заново заполнить кеш) кеш, также вы можете объяснить, что такое самонаселенный кеш.

1 Ответ

0 голосов
/ 22 октября 2011

В документах Ehcache a SelfPopulatingCache описывается как:

Самонаселенный декоратор для Ehcache, который создает записи по требованию.

Это означает, что при запросе значения SelfPopulatingCache, которое не находится в кэше, оно создаст это значение для вас. Эта статья блога содержит много деталей, а также код (включая автоматическое обновление).

Для меня это звучит так: Ehcache SelfPopulatingCache - это то, что лучше всего соответствует вашим потребностям. Поэтому я бы посоветовал взглянуть поближе.

Кэш Hibernate 2-го уровня, безусловно, поможет повысить производительность системы, но не решит вашу проблему, насколько я понимаю. Это правда при использовании Ehcache и установке timeToIdleSeconds срок действия кеша истекает после этого времени, но он не обновляется автоматически.

Посмотрите, что Документы Hibernate пишут о кеше запросов :

Кеш запросов не кеширует состояние реальных сущностей в кеше; он кэширует только значения идентификатора и результаты типа значения. По этой причине кэш запросов всегда должен использоваться вместе с кешем второго уровня для тех объектов, которые, как ожидается, будут кешироваться как часть кеша результатов запроса (как и при кешировании коллекции).

Наконец, OSCache устарел.

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