1

Tout, est-il possible de désactiver le cache secondaire dans mon fichier xml de persistance? J'ai une configuration Spring + Hibernate + JPA qui utilise ehcache. Dans mon dossier persistence.xml J'ai cette entrée:Comment désactiver ehcache dans le fichier persistence.xml

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

mais cela ne semble pas fonctionner, et je vois encore le nombre d'entités chargées ne cesse d'augmenter, que mes courses d'application. Je vais chercher les statistiques en utilisant ceci:

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

S'il vous plaît aider.

+0

Quelles statistiques regardez-vous? Parce que cette propriété devrait faire ce que vous voulez, et le nombre d'entités chargées n'a rien à voir avec le cache de second niveau. Regardez toutes les méthodes dans Statistics commençant par getSecondLevelCache –

+0

Je regarde ces statistiques: "entities loaded = 30" – Ayusman

+1

Le nombre d'entités chargées est le nombre d'entités chargées dans la session, c'est-à-dire le cache de premier niveau. –

Répondre

3

Les statistiques que vous regardez sont le cache de session Hibernate (le cache de 1er niveau). Votre cache de second niveau (ehcache) est désactivé. Ce que vous ressentez est le comportement normal.

EDIT:

Lorsque ehcache est activé, vous trouverez les entrées du journal comme:

[#|...|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|#] 

(à condition que vous activer la journalisation pour le paquet - le fournisseur de cache peut varier, par exemple net.sf.ehcache.hibernate.EhCacheRegionFactory peut-être - ne sais pas ce que vous utilisez)

+0

Y at-il un journal qui suggère que l'ehcache est désactivé? Comment puis-je confirmer que l'ehcache est réellement désactivée et comment puis-je trouver quelles sont les entités qui sont servies depuis ehcahce et non pas le cache de niveau 1 d'hibernate? – Ayusman

+0

@Ayusman: ajouté des informations sur ce que les journaux ehcache; comme JB Nizet a suggéré que vous pouvez également regarder les méthodes getSecondLevelCache *() de l'objet 'Statistics' que vous obtenez à partir de' empImpl.getSessionFactory(). getStatistics() ' – jeha

Questions connexes