2012-02-03 2 views
0

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

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

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

Любой чистый способ решить проблему с кешем?

ответ

1

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

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

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

+0

Спасибо за ваш ответ, так как я не буду вручную аннулировать кеш в моей бизнес-логике, я не буду использовать кеш в базе данных рабочего процесса. Вместо этого я просто использую кеш только в моей базе данных. – Tommy

+0

, если вы считаете, что производительность неприемлема без кеша (это редко бывает), вы можете изучить стратегии репликации кеша, такие как gemfire, terracota, coherance – dbrin

0

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

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

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

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

  1. Ваш рабочий двигатель использует спящий режим
  2. И ваша установка кэш только для чтения
+0

Спасибо за ваш ответ, hibernate только для чтения, а кеш установлен только для чтения , поэтому timestampcache никогда не будет обновляться, что создает проблему. Я не буду использовать ehcache в базе данных рабочего процесса. – Tommy