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