Как реализовать самонасыщенный кеш ehcache в качестве спящего режима второго уровня
Я просто изучаю самонасыщенный кеш Ehcache как спящий режим второго уровня.
Поддерживает ли hibernate самонаполняющийся кеш?
Кто-нибудь может помочь мне найти несколько примеров реализации / документов, связанных с этой темой?
2 ответа
VamsiKrishna, я не совсем уверен, чего вы здесь добиваетесь, но я думаю, вы хотите избежать того, чтобы два потока загружали одну и ту же сущность из БД. Боюсь, вы не сможете этого достичь. Во-первых, Hibernate не хранит сущности в кеше, а выводит их на поверхность. Создание их, а затем размещение их так, чтобы слой Ehcache мог с ними справиться (они могут быть перемотаны в некоторые другие внутренние типы iirc), это все, что я считаю невозможным (доступность типов будет одной из проблем).
Кроме того, вы можете использовать BlockingCache для имитации поведения и позволить Hibernate заполнять кэш. Проблема в том, что Hibernate не будет помещать нулевые значения в кеш, если я правильно помню. Несоблюдение этого требования в конечном итоге заблокирует весь ваш кэш.
Короче говоря, я думаю, что вам лучше позволить Hibernate самостоятельно справиться с одновременным доступом к Cache (контролируемому стратегией доступа к кэшу), поскольку для пользователя ничего не предназначено для этого...
С веб-сайта ehcache - http://www.ehcache.org/documentation/user-guide/hibernate.
В hibernate.cfg.xml добавить
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>