Проблемы с конфигурацией Ecache

#hibernate #ehcache #cache-control

#переход в спящий режим #ehcache #управление кэшем

Вопрос:

Мы изучаем варианты использования Ehcache для нашего веб-приложения на двух уровнях

  1. Для спящего режима кэш второго уровня.
  2. Для кэша веб-приложений (jsp)

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

для части пользовательского интерфейса я могу настроить фильтры таким образом, что они будут кэшировать только содержимое пользовательского интерфейса и не будут управлять кэшем бэк-офиса.

но реальная проблема связана с кэшем второго уровня Hibernate, поскольку мы планируем использовать тот же уровень DAO для части пользовательского интерфейса, но поскольку нам нужно настроить параметры кэша в соответствующих файлах .hbm, что означает, что кэш также будет работать для бэк-офиса, которого мы хотим избежать.

Все, что мы хотим, чтобы кэш второго уровня Hibernate был активирован для частей пользовательского интерфейса, а для бэк-офиса он не должен включаться для воспроизведения, но на данный момент это не представляется возможным из-за использования того же уровня DAO, но мы не хотим дублировать код DAO.

есть ли какой-либо способ добиться этого.Любое предложение в этом отношении будет очень полезным.

Ответ №1:

В вашем DAO вам нужно будет добавить setCacheable (true) к вашему запросу, поэтому в принципе вы можете просто добавить логический параметр к вашему методу DAO для передачи в setCacheable (…)

 Class YourDao {

 public List loadStuff(Session session, boolean isCacheable) {
   return session.createQuery("from Myentity").setCacheable(isCacheable).list();
 }

}