Это классическая проблема, связанная с кешированием. Когда вы дублируете данные - в базе данных и в кеше - вы вводите проблемы согласованности.
ответ на этот вопрос.
Для 1 ответ зависит от того, насколько важно предотвращать подачу устаревших данных из кеша. В некоторых ситуациях это не проблема, и работа с коротким временем истечения времени решит ее. В других случаях вы должны иметь обновленные данные в кеше, и тогда вам нужно будет убедиться, что кэшированные записи недействительны.
Обратите внимание, что делать это в полностью безопасном режиме сложно, поэтому Hibernate has so many second level cache strategies, безопаснее и безопаснее, но медленнее и медленнее.
Для вопроса 2 это относится исключительно к вашему приложению. Если только ваше приложение обновляет базу данных, то вы должны знать, когда необходимо аннулировать кеш. Если база данных обновляется извне, вам необходимо сообщить этой системе о своем приложении или, по крайней мере, кешах, чтобы он мог отправлять недействительные.
- это база данных обновляется через одно приложение или другое приложение или непосредственно в базе данных? –
, если это то же приложение, то вы знаете, когда база данных будет обновлена. –
, но как мне синхронизировать мою базу данных с ehcache? –