2015-02-23 2 views
2

В моем проекте я должен поместить различные таблицы данных в разные кеши L2 на основе использования. Некоторые таблицы требуют реплицированного кеша, в то время как другие могут позволить себе только распределенный кеш. Возможно ли такое конфигурирование с спящим режимом?Hibernate разные кеши для разных столов?

В hibernate.properties мы можем указать только один кэш

hibernate.cache.infinispan.entity.cfg=replicated-cache-entity 
hibernate.cache.infinispan.collection.cfg=replicated-cache-entity 

Этот кэш выполнен в ininispan.xml

<namedCache name="replicated-cache-entity"> 
     <clustering mode="replication"> 
      <stateRetrieval fetchInMemoryState="false" timeout="20000"/> 
      <sync replTimeout="20000"/> 
     </clustering> 
    </namedCache> 

Есть ли способ указать разные кэширует (имена кэша в infinispan) для одной таблицы или класса?

ИЛИ

Есть ли способ для перехвата зимуют L2 вызовов кэша, как infinispan перехватчики?

ответ

3

Infinispan user guide также упоминает за объект конфигурацию кэша:

На вершине, что, это тонкоуровневое определение кэша позволяет пользователям определить параметры кэша для каждого объекта/сбора основы. Например:

<!-- If using Hibernate, add to your hibernate.cfg.xml --> 
<property name="hibernate.cache.infinispan.com.acme.Person.cfg"> 
    person-entity 
</property> 
<property name="hibernate.cache.infinispan.com.acme.Person.addresses.cfg"> 
    addresses-collection 
</property> 
+0

Действительно, это самый простой способ для достижения этой цели. Просто помните, что имя свойства может меняться при работе в Wildfly или EAP. См. Документ. –

+0

Это работает, если 'com.acme.Person' является подклассом и связанным с ним hbm является . В моем случае мне нужно кэшировать только один объект в дереве наследования java, но все это дерево имеет только одну таблицу. – Viraj

 Смежные вопросы

  • Нет связанных вопросов^_^