java - 如何在 JBoss 7.1.1 中启用查询缓存

标签 java caching jpa jboss infinispan

我尝试在 JBoss 7.1.1 中启用查询缓存,但没有成功 我在代码中添加了这个:

TypedQuery<Currency> query = entityManager.createNamedQuery("getCurrency",Currency.class);
query.setParameter("code", code);
query.setHint("javax.persistence.cache.storeMode", CacheStoreMode.REFRESH);
query.setHint("javax.persistence.cache.retrieveMode", CacheRetrieveMode.USE);
query.setHint("org.hibernate.cacheable", true); 

namedQuery 看起来像这样:

@Cacheable
@Entity
@Table(name = "currency")
@NamedQuery(
    name = "getCurrency",
    query = "FROM Currency c WHERE c.iso4217code = :code"
)

我的 persistence.xml 中有以下内容:

<persistence-unit name="cache_persistence">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <jta-data-source>java:jboss/datasources/cache</jta-data-source>
    <class>com.unwire.cache.model.CacheTest</class>
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
    <properties>
     <property name="hibernate.show_sql" value="false" />
     <property name="hibernate.hbm2ddl.auto" value="none" />
     <property name="hibernate.cache.use_second_level_cache" value="true"/>
     <property name="hibernate.cache.use_query_cache" value="true"/>
     <property name="hibernate.generate_statistics" value="true"/>
    </properties>

</persistence-unit>

当我在服务器上运行war文件时 实体被缓存,但查询缓存从未被使用

我已在此处上传文件:http://www.filedropper.com/cachetest

最佳答案

在我的代码(ear archive,但这应该不会产生影响)中,我只是:

query.setHint("org.hibernate.cacheable", true); 
query.setHint("org.hibernate.cacheMode", "NORMAL"); 

<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
  <properties>
  <property name="hibernate.cache.use_second_level_cache" value="true"/>
  <property name="hibernate.cache.use_query_cache" value="true"/>
  <property name="hibernate.generate_statistics" value="true" />
</properties>

并且不需要任何额外的东西(就像你有的那样)并且它可以工作。当然,您必须针对查询的相同参数测试缓存。

关于java - 如何在 JBoss 7.1.1 中启用查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21600340/

相关文章:

java使用hibernate SQLQuery获取多个列

java - 从内存而不是磁盘读取文件

javascript - OpenLayers 3 可以使用 WebSQL 或 IndexedDB 来缓存 map 瓦片吗

java 如何设置自增属性

java - Hibernate select id of join column without join

java - 字符串到日历对象

java - 沿已知角度画一条已知距离的线

java - 如何将文件路径写入txt.file?

PHP:在数据库中存储简单缓存数组的有效方法?

java - 启动服务时Jpa-hibernate错误