Hibernate 使用infinispan查询缓存

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

在我的项目中,我使用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-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> 

我的问题是:

  • 如何缓存java类中使用的查询
  • 对于hibernate hbm文件,缓存文件夹由infinispan创建,但缓存文件未在相应的文件夹中生成。为什么

  • 英菲尼斯潘的配置到处都是,根本没有遵循《技术手册》中的指导原则。不需要钝化,它只是一个缓存!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,正如你所说的,暗影爬行者是对的。。。现在缓存工作正常。。。我用你的代码作为我的参考。。。。非常感谢……:)