Как реализовать самозаполняющийся кеш ehcache в качестве спящего кеша второго уровня

Я просто изучаю самозаполняющийся кэш Ehcache как кэш второго уровня гибернации.

Поддерживает ли спящий режим самозаполняемый кеш?
Может ли кто-нибудь помочь мне найти несколько примеров реализаций/документов, связанных с этой темой?


person VamsiKrishna    schedule 22.11.2011    source источник
comment
возможный дубликат stackoverflow.com/questions/4648346/   -  person Satadru Biswas    schedule 22.11.2011


Ответы (2)


VamsiKrishna, я не совсем уверен, чего вы пытаетесь достичь здесь, но я думаю, вы хотите избежать того, чтобы два потока загружали один и тот же объект из БД. Теперь, я боюсь, вы не сможете добиться этого. Во-первых, Hibernate хранит в кеше не объекты, а обезвоженное их представление. Создание их, а затем размещение их так, чтобы уровень Ehcache мог с ними справиться (они могут быть переупакованы в некоторые другие внутренние типы iirc), - это все, что я считаю невозможным (доступность типов будет одной из проблем).

Кроме того, вы можете использовать BlockingCache для имитации поведения и позволить Hibernate заполнить кэш. Проблема в том, что Hibernate не будет помещать нулевые значения в кеш, если я правильно помню. Невыполнение этого требования в конечном итоге заблокирует весь ваш кэш.

Короче говоря, я думаю, что вам лучше позволить Hibernate иметь дело с одновременным доступом к кешу (контролируемому стратегией доступа к кешу) самостоятельно, поскольку на самом деле ничего не предназначено для пользователя...

person Alex Snaps    schedule 22.11.2011

С веб-сайта 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>
person Vivek    schedule 22.11.2011
comment
Привет Вивек, спасибо за ваш ответ. Ссылки, которые вы дали, были для обычного ehcache в качестве спящего кеша второго уровня, но здесь я ищу ** самозаполняющийся кеш ** в качестве кеша второго уровня. - person VamsiKrishna; 22.11.2011