#hibernate #ehcache #cache-control
#переход в спящий режим #ehcache #управление кэшем
Вопрос:
Мы изучаем варианты использования Ehcache для нашего веб-приложения на двух уровнях
- Для спящего режима кэш второго уровня.
- Для кэша веб-приложений (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();
}
}