Ehcache кэшированный элемент не так - PullRequest
0 голосов
/ 03 февраля 2012

Я использую hibernate + ehcache для чтения базы данных механизма рабочего процесса. Hibernate ничего не пишет в этой базе данных. Если я установлю параметр TimetoLive в кеше, кеш не будет отражать никаких изменений в базе данных, пока не прибудет TimetoLive.

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

Разве ehcache не должен знать, что срок действия кэша истек, и делать ли обновления для меня?

Есть ли какой-нибудь чистый способ решения проблемы с кешем?

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

кэш не будет отражать какие-либо изменения базы данных, пока не прибудет TimetoLive.

Это предполагаемая функциональность!Эти кэши второго уровня ничего не делают, кроме как хранят данные в хэш-картах и ​​ничего не знают об изменениях, если вы не сообщите об этом или не извлечете объекты из кэша и не перечитаете их.

Чтобы решить эту проблему, не используйте кэши на летучих объектах.

0 голосов
/ 03 февраля 2012

Если я установлю параметр TimetoLive в кеше, кеш не будет отражать какие-либо изменения базы данных, пока не прибудет TimetoLive.

Так что это означает, что вы не используете его.

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

Таким образом, в качестве альтернативы (timetoLive), это означает, что вам нужен режим кэширования для чтения-записи или чтения-нестрого-записи (проверьте имя примерно так). Если это не отражает изменения, и я предполагаю две вещи

  1. Ваш рабочий процесс Engine использует hibernate
  2. И ваш кэш-настройки только для чтения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...