Hibernate 使用infinispan查询缓存
在我的项目中,我使用Jboss作为7.1服务器、Hibernate3.5和Java1.7。对于缓存,我使用infinispan 5.1.5(“Brahma”)。通过以下方式,我在hibernate配置xml中配置缓存Hibernate 使用infinispan查询缓存,hibernate,jboss,infinispan,Hibernate,Jboss,Infinispan,在我的项目中,我使用Jboss作为7.1服务器、Hibernate3.5和Java1.7。对于缓存,我使用infinispan 5.1.5(“Brahma”)。通过以下方式,我在hibernate配置xml中配置缓存 true 符合事实的 org.hibernate.transaction.JBossTransactionManagerLookup org.hibernate.cache.infinispan.InfinispanRegionFactory 符合事实的 infinispan-co
true
符合事实的
org.hibernate.transaction.JBossTransactionManagerLookup
org.hibernate.cache.infinispan.InfinispanRegionFactory
符合事实的
infinispan-config.xml
在我的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>
我的问题是:
英菲尼斯潘的配置到处都是,根本没有遵循《技术手册》中的指导原则。不需要钝化,它只是一个缓存!Hibernate本身已经是您的后端,如果不在缓存中,可以在其中检索数据。不需要调用捕获,并且不在Infinispan配置级别配置事务。确保在Hibernate级别正确配置事务,并且这些设置将在Infinispan中使用
最后,我用Infinispan为Hibernate 2LC创建了一些演示。查看一下它们,您将看到如何进行查询缓存:)Infinispan配置到处都是,根本没有遵循中的指导原则。不需要钝化,它只是一个缓存!Hibernate本身已经是您的后端,如果不在缓存中,可以在其中检索数据。不需要调用捕获,并且不在Infinispan配置级别配置事务。确保在Hibernate级别正确配置事务,并且这些设置将在Infinispan中使用
最后,我用Infinispan为Hibernate 2LC创建了一些演示。查看一下它们,您将看到如何进行查询缓存:)有人可以在这个问题上帮助我吗..?您好,不幸的是,我不是hibernate方面的专家。除此之外,我刚刚注意到您正在使用钝化=“true”配置FileCacheStore。并且在XML中没有任何配置。在这种情况下,默认情况下禁用逐出。重要事项:启用配置组合钝化和禁用逐出无效,Infinispan将记录警告。(当我现在帮不上忙的时候,只是一个小小的洞察)谢谢你的回复。你的建议对我很有用,因为即使我也是这个平台的新手。有人能在这个问题上帮助我吗?你好,不幸的是我不是hibernate方面的专家。除此之外,我刚刚注意到您正在使用钝化=“true”配置FileCacheStore。并且在XML中没有任何配置。在这种情况下,默认情况下禁用逐出。重要事项:启用配置组合钝化和禁用逐出无效,Infinispan将记录警告。(当我现在帮不上忙的时候,只是一个小小的洞察)谢谢你的回复。你的建议对我很有用,因为即使是我也是这个平台的新手。嗨,格莱德,首先很抱歉我的回复太晚了。。。演示帮助我理解了这个概念,非常感谢。但是我对我的实例表使用select查询,因为我无法为此创建任何hibernate bean类(和hbm.xml文件)。因此,在编写select查询时,我通过提供query.setcacable(true)来启用查询缓存。但是它不起作用。。还有其他方法吗?…@Ranjith请记住,只有当完全相同的查询在没有任何数据库更新的情况下多次运行时,查询缓存才有用(即使这样,它的使用也可能有问题)@Ranjith,Shadow Screever提出了一些非常好的观点。除此之外我不知道。该演示包含一个特定于查询的示例,可以使用(),因此我将从它开始,看看它是否适合您,然后与您的示例进行比较,并在Hibernate代码中进行调试,以了解查询缓存不起作用的原因。记住使用统计数据来验证期望。嗨,Glader,正如你所说的,暗影爬行者是对的。。。现在缓存工作正常。。。我用你的代码作为我的参考。。。。非常感谢…-)嗨,格莱德,首先很抱歉我迟了回复。。。演示帮助我理解了这个概念,非常感谢。但是我对我的实例表使用select查询,因为我无法为此创建任何hibernate bean类(和hbm.xml文件)。因此,在编写select查询时,我通过提供query.setcacable(true)来启用查询缓存。但是它不起作用。。还有其他方法吗?…@Ranjith请记住,只有当完全相同的查询在没有任何数据库更新的情况下多次运行时,查询缓存才有用(即使这样,它的使用也可能有问题)@Ranjith,Shadow Screever提出了一些非常好的观点。除此之外我不知道。该演示包含一个特定于查询的示例,可以使用(),因此我将从它开始,看看它是否适合您,然后与您的示例进行比较,并在Hibernate代码中进行调试,以了解查询缓存不起作用的原因。记住使用统计数据来验证期望。嗨,Glader,正如你所说的,暗影爬行者是对的。。。现在缓存工作正常。。。我用你的代码作为我的参考。。。。非常感谢……:)