Кэш запросов с использованием infinispan

В моем проекте я использую сервер Jboss AS 7.1, hibernate 3.5 и java 1.7. Для кеша я использую infinispan 5.1.5 ("Brahma"). Следующим образом я настраиваю кеш в hibernate config xml.

<prop key="hibernate.cache.use_second_level_cache">true</prop> <prop key="hibernate.cache.use_query_cache">true</prop> <prop key="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</prop> <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.infinispan.InfinispanRegionFactory</prop> <prop key="hibernate.cache.infinispan.statistics">true</prop> <prop key="hibernate.cache.infinispan.cfg">infinispan-config.xml</prop>

и в моем infinispan-config.xml

<default>
     <transaction
            transactionManagerLookupClass="org.infinispan.transaction.lookup.GenericTransactionManagerLookup"
            syncRollbackPhase="false"
            syncCommitPhase="false"
            cacheStopTimeout="30000"
            use1PcForAutoCommitTransactions="false"
            autoCommit="true"
            lockingMode="OPTIMISTIC"
            useSynchronization="false"
            transactionMode="TRANSACTIONAL"
     />
     <invocationBatching enabled="true" />
    <loaders passivation="true" shared="true" preload="true">
        <loader class="org.infinispan.loaders.file.FileCacheStore" fetchPersistentState="true"
            ignoreModifications="false" purgeOnStartup="false">
            <properties>
                <property name="location" value="/tmp/infinispan"/>
            </properties>
        </loader>
    </loaders> 
</default> 

Мои вопросы:

  1. Как я могу кэшировать запросы, которые используются в классе java?
  2. Для файлов гибернации hbm папка кеша была создана infinispan, но файл кеша не создается в соответствующей папке, почему?

person Ranjith    schedule 07.06.2013    source источник
comment
может ли кто-нибудь помочь мне в этом вопросе, пожалуйста..?   -  person Ranjith    schedule 07.06.2013
comment
Привет, к сожалению, я не эксперт в спящем режиме. Кроме того, я только что заметил, что вы настраиваете свой FileCacheStore с пассивацией = true. И в вашем XML не настроено «выселение». В этом случае выселение отключено по умолчанию. Важно: включенная пассивация комбинации конфигураций И ​​отключенное вытеснение недействительны, и Infinispan будет регистрировать предупреждения. (Только небольшое понимание, когда я не могу больше помочь сейчас)   -  person tsykora    schedule 07.06.2013
comment
Цикора спасибо за ответ. Ваше предложение очень полезно для меня, потому что даже я новичок в этой платформе.   -  person Ranjith    schedule 07.06.2013


Ответы (1)


Эта конфигурация Infinispan используется повсюду и никоим образом не соответствует рекомендациям в конфигурация Infinispan по умолчанию для Hibernate 2LC. Нет необходимости в пассивации, это просто кеш! Hibernate сам по себе уже является вашим бэкендом, откуда данные можно получить, если не в кеше. Нет необходимости перехватывать вызовы и не настраивать транзакции на уровне конфигурации Infinispan. Убедитесь, что транзакции правильно настроены на уровне Hibernate, и эти настройки будут использоваться в Infinispan.

Наконец, я создал несколько демонстраций для Hibernate 2LC с Infinispan здесь. Взгляните на них, где вы увидите, как вы можете кэшировать запросы :)

person Galder Zamarreño    schedule 07.06.2013
comment
Привет, Glader, прежде всего извините за мой поздний ответ... и демо очень помогло мне понять концепцию, так что большое спасибо. Но я использую запросы на выборку для своих таблиц экземпляров, если я не могу создать для этого какой-либо класс компонента hibernate (и файлы hbm.xml). истинный). Но это не работает.. есть ли другой способ?... - person Ranjith; 08.06.2013
comment
@Ranjith имейте в виду, что кеш запросов полезен только тогда, когда один и тот же запрос выполняется несколько раз без каких-либо обновлений базы данных (и даже в этом случае его использование может быть сомнительным) tech.puredanger.com/2009/07/10/hibernate-query-cache - person Shadow Man; 11.06.2013
comment
@Ranjith, Shadow Creeper делает несколько очень хороших замечаний. Кроме этого я не знаю. Демонстрация содержит работающий пример конкретного запроса (github.com/galderz/secondlc/blob/master/src/test/java/secondlc/), поэтому я бы начал с него, посмотрел, работает ли он у вас, затем сравнил с вашим и отладил в Hibernate. код, чтобы узнать, почему кэширование запросов не работает. Не забывайте использовать статистику для проверки ожиданий. - person Galder Zamarreño; 13.06.2013
comment
Привет, Glader, как ты сказал, Shadow Creeper был прав... теперь кеш работает нормально... Я использовал твой код в качестве ссылки.... Большое спасибо...:-) - person Ranjith; 13.06.2013