Hibernate Кэш второго уровня, общий для разных JVM
Мне интересно узнать, можно ли разделить кэширование Hibernate второго уровня между двумя разными сеансами Hibernate, работающими на двух разных JVM.
Я использую Hibernate 3.1 с Ehcache для обеспечения кэширования второго уровня, и в файле конфигурации Ehcache.xml мы можем указать, где мы хотим создать кеш на диске
<ehcache>
<diskStore path="C:\Learn\db"/>
</ehcache>
Поэтому, если я сейчас открою два разных сеанса Hibernate, в разных JVM, где оба указывают на одно и то же, это позволит мне разделить кэш второго уровня между двумя JVM.
Если это так. поэтому, если один из сеансов Hibernate обновит свой кэш (кэш уровня сеанса), он впоследствии обновит кэш второго уровня и, следовательно, второй сеанс, запущенный на другой JVM, при доступе к этому кэшу получит обновленные данные.
большое спасибо.
2 ответа
Вы можете использовать любой из механизмов репликации / кластеризации ehcache с вашими кешами второго уровня Hibernate. Смотрите либо:
Теперь, в зависимости от того, какое решение для репликации / кластеризации вы выберете, все стратегии кэширования могут быть не рекомендованы, но, по крайней мере, для них не потребуется полная среда XA.
Да, вы можете, я не знаю об ehcache, но Infispan позволяет вам делать это (при условии, что вы используете базу данных)