在我的项目中,我使用 Jboss AS 7.1 服务器、hibernate 3.5 和 java 1.7。对于缓存,我使用 infinispan 5.1.5(“Brahma”)。通过以下方式,我在 hibernate 配置 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>
我的问题:
- 如何缓存 java 类中使用的查询?
- 对于 hibernate hbm 文件,缓存文件夹是由 infinispan 创建的,但缓存文件没有在相应的文件夹中生成,为什么?
最佳答案
Infinispan 配置到处都是,完全不遵循 default Infinispan configuration for Hibernate 2LC 中的指导方针。 。不需要钝化,只是一个缓存! Hibernate 本身已经是您的后端,如果数据不在缓存中,则可以在其中检索数据。无需调用捕获,也无需在 Infinispan 配置级别配置事务。确保在 Hibernate 级别正确配置事务,并且这些设置将在 Infinispan 中使用。
最后,我使用 Infinispan 创建了一些 Hibernate 2LC 演示 here 。看看它们,您将了解如何进行查询缓存:)
关于hibernate - 使用 infinispan 查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16976963/