2017-05-19 12 views
0

와의 persistence.xml에 사용할 두 번째 레벨 캐시를 사용하여 응용 프로그램의 두 번째 레벨 캐시 크기를 증가 : 일부 기관 과에도 @Cacheable을 감안할 때제이보스 EAP 7 : 제이보스 7 감안할 JPA 응용 프로그램

<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" /> 

를 @ org.hibernate.annotations.Cache (usage = CacheConcurrencyStrategy.TRANSACTIONAL) 일부 릴레이션에서. 성능이 나쁜이기 때문에

나는의 persistence.xml에

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

에 돌았 다.

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 AS 7 (2011 년부터)이 아닌 JBoss EAP 7 (2016 년부터)을 의미했습니다.

+0

그것은 내게 맞는 것 같습니다. 예를 들어 '''''' –

+0

엔티티로 시도 할 수 있습니다. 예 :'''''' –

답변

2

사용자 지정 영역 (org.hibernate.annotations.Cache 통해)을 사용하지 않는 한 hibernate.cache.infinispan.entity.eviction.max_entries을 설정하는 것이 올바른 방법입니다. -1로 설정하면 퇴거를 완전히 해제 할 수도 있습니다.

엔티티를 수정 한 후에 캐시 미스가 나타날 수 있습니다. 캐시는 각 쓰기 후에 + 효화되며 다음 읽기시 다시 채워질 것으로 예상됩니다. 다른 옵션은 evictEntityRegions 또는 evictAll 또는 removeAll을 호출하는 다른 작업을 호출하는 것입니다. 이러한 경우 디버그하거나 Byteman 규칙을 설치하여 범인을 찾아야합니다.