1

全部, 是否可以在我的持久性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

你在看哪些統計數據?因爲這個屬性應該做你想做的事情,並且加載的實體的數量與二級緩存無關。查看統計中以getSecondLevelCache開始的所有方法 –

+0

我正在查看這些統計信息:「實體已加載= 30」 – Ayusman

+1

加載的實體數量是會話中加載的實體數量,即第一級緩存。 –

回答

3

您正在查看的統計信息是Hibernate會話緩存(第一級緩存)。您的二級緩存(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提供的實體而不是hibernate的第一級緩存? – Ayusman

+0

@Ayusman:添加有關ehcache日誌的信息;因爲JB Nizet建議您也可以查看從empImpl.getSessionFactory()獲得的'Statistics'對象的getSecondLevelCache *()方法getStatistics()' – jeha

相關問題