Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate JBoss EAP 7:增加JPA应用程序的二级缓存大小_Hibernate_Jpa_Jboss_Jboss7.x_Infinispan - Fatal编程技术网

Hibernate JBoss EAP 7:增加JPA应用程序的二级缓存大小

Hibernate JBoss EAP 7:增加JPA应用程序的二级缓存大小,hibernate,jpa,jboss,jboss7.x,infinispan,Hibernate,Jpa,Jboss,Jboss7.x,Infinispan,给定JBoss 7和一个在persistence.xml中启用了二级缓存的应用程序: <property name="hibernate.cache.use_second_level_cache" value="true" /> <property name="hibernate.cache.use_query_cache" value="true" /> <property name="hibernate.cache.region.factory_class" v

给定JBoss 7和一个在persistence.xml中启用了二级缓存的应用程序:

<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.infinispan.JndiInfinispanRegionFactory" />
<property name="hibernate.cache.infinispan.cachemanager" value="java:jboss/infinispan/container/hibernate" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" />
<property name="hibernate.cache.default_cache_concurrency_strategy" value="transactional" />

在某些实体上也给出了@Cacheable 和@org.hibernate.annotations.Cache(用法=cacheconcurrencysttrategy.TRANSACTIONAL)在某些关系上

因为性能不好,我打开了

<property name="hibernate.generate_statistics" value="true" />

在persistence.xml中

在JPA统计数据中,我看到很多缓存未命中,甚至对于我几秒钟前访问的实体也是如此。所以我假设缓存大小不够大。我怎样才能增加呢

我试过了

<property name="hibernate.cache.infinispan.entity.eviction.max_entries" value="200000"/>
<property name="hibernate.cache.infinispan.entity.expiration.lifespan" value="1800000"/>
<property name="hibernate.cache.infinispan.entity.expiration.max_idle" value= "1200000"/>

在persistence.xml中,但未命中仍然相同


澄清:对不起,我指的是JBoss EAP 7(从2016年起),而不是JBoss AS 7(从2011年起)

除非您使用自定义区域(通过
org.hibernate.annotations.Cache
),否则设置
hibernate.Cache.infinispan.entity.execision.max_entries
是正确的方法。您甚至可以通过将其设置为-1来完全禁用逐出


修改实体后,可以看到缓存未命中;缓存在每次写入后都会失效,并期望在下次读取时重新填充。另一个选项是某个正在调用或另一个操作最终调用或。如果出现这种情况,您必须调试这些方法或安装Byteman规则以找出罪魁祸首。

除非您使用自定义区域(通过
org.hibernate.annotations.Cache
),否则设置
hibernate.Cache.infinispan.entity.execution.max_entries
是正确的方法。您甚至可以通过将其设置为-1来完全禁用逐出


修改实体后,可以看到缓存未命中;缓存在每次写入后都会失效,并期望在下次读取时重新填充。另一个选项是某个正在调用或另一个操作最终调用或。如果是这种情况,你必须调试这些方法或安装Byteman规则来找出罪魁祸首。

我觉得这一切都是正确的,尝试更改区域工厂例如:
你可以按实体尝试例如:
我觉得这一切都是正确的,尝试更改区域工厂例如:
你可以按实体尝试例如: