2

在我的项目中,我使用 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 创建的,但是在相应的文件夹中没有生成缓存文件,为什么?
4

1 回答 1

4

Infinispan 配置无处不在,并且绝不遵循Hibernate 2LC 的默认 Infinispan 配置中的指南。不需要钝化,它只是一个缓存!Hibernate 本身已经是您的后端,如果不在缓存中,则可以在其中检索数据。无需调用捕获,也无需在 Infinispan 配置级别配置事务。确保在 Hibernate 级别正确配置事务,并且这些设置将在 Infinispan 中使用。

最后,我在这里用 Infinispan 为 Hibernate 2LC 创建了一些演示。看看它们,您将了解如何进行查询缓存:)

于 2013-06-07T14:47:06.917 回答