1

모두 내 persistence xml 파일에서 보조 캐시를 비활성화 할 수 있습니까? ehcache를 사용하는 Spring + Hibernate + JPA 구성이 있습니다. 내 persistence.xml 파일에서 나는이 항목이 있습니다persistence.xml 파일에서 ehcache를 비활성화하는 방법

<property name="hibernate.cache.use_second_level_cache" value="false"/> 

을하지만이 작동하지 않는 것, 나는 여전히로드 된 개체의 수를 내 응용 프로그램이 실행될 때, 증가에 유지를 참조하십시오. 다음을 사용하여 통계를 가져옵니다.

EntityManagerFactoryInfo emfi = (EntityManagerFactoryInfo) entityManagerFactory; 
EntityManagerFactory emf = emfi.getNativeEntityManagerFactory(); 
EntityManagerFactoryImpl empImpl = (EntityManagerFactoryImpl)emf; 
log.debug(empImpl.getSessionFactory().getStatistics()); 

도와주세요.

+0

어떤 통계를보고 있습니까? 이 속성은 원하는대로 수행해야하며로드 된 엔터티의 수는 2 차 수준 캐시와 아무 관계가 없기 때문입니다. getSecondLevelCache로 시작하는 통계의 모든 메소드를 살펴보십시오. –

+0

이 통계를보고 있습니다 : "entities loaded = 30" – Ayusman

+1

로드 된 엔티티 수는 세션에로드 된 엔티티 수, 즉 1 차 레벨 캐시입니다. –

답변

3

보고있는 통계는 Hibernate 세션 캐시 (1 차 캐시)입니다. 2 차 레벨 캐시 (ehcache)가 사용 불가능합니다. 당신이 경험하는 것은 정상적인 행동입니다.

편집 :

으로 Ehcache는 같은 항목 로그 찾을 것이다 사용하는 경우 : 패키지에 대한 로깅 에이블

[#|...|INFO|sun-appserver2.1|org.hibernate.cfg.SettingsFactory|...|Second-level cache: enabled|#] 
[#|...|INFO|sun-appserver2.1|org.hibernate.cfg.SettingsFactory|...|Cache provider: org.hibernate.cache.EhCacheProvider|#] 

(제공을 - 캐시 제공자는 예를 들어 다를 수 있습니다 어쩌면 net.sf.ehcache.hibernate.EhCacheRegionFactory - 모르는 당신이 사용하는 것)

+0

거기에 ehcache가 해제되었다는 것을 나타내는 로그가 있습니까? ehcache가 실제로 사용 불가능하다는 것을 어떻게 확인할 수 있습니까? ehcahce에서 제공되는 것이고 최대 절전 모드의 1 차 캐시가 아닌 엔티티는 어떻게 찾을 수 있습니까? – Ayusman

+0

@Ayusman : ehcache 로그에 대한 정보를 추가했습니다. JB Nizet은'empImpl.getSessionFactory(). getStatistics()'에서 얻은'Statistics' 객체의 getSecondLevelCache *() 메소드를 살펴볼 것을 제안했다. – jeha

관련 문제