Comment puis-je désactiver le cache de second niveau de certaines entités dans certaines Hibernate sans changer les annotations
-
06-09-2019 - |
Question
J'utilise le cache de second niveau Hibernate dans ma demande, pour certaines raisons d'affaires Je ne peux pas changer l'annotation entité plus .
Dans mon projet, à l'exception de changer la base de données de mise en veille prolongée, il existe également d'autres SQL natif qui ne passe pas par Hibernate. Par conséquent, les données du cache de second niveau Hibernate pourrait être obsolète après la base de données mise à jour de SQL natif. Voilà pourquoi je veux pour désactiver le cache de second niveau pour certaines entités (programme ou autre moyen que l'annotation changer).
Merci d'avance!
La solution
ATTENTION: Comme Jens Schauder a noté, il est impossible de configurer Ehcache pour stocker 0 éléments dans la mémoire en définissant maxElementsInMemory = « 0 » car il provoque effectivement un effet contraire - définit une taille illimitée pour le cache. Ce comportement ne figure pas sur la rel="nofollow la page de mise en veille prolongée, mais est documenté caching sur la page de cache de configuration.
Je l'ai rapidement examiné les documents et n'ont pas encore trouvé autre approche. Je ne peux pas supprimer cette réponse par moi-même. : - (
Ma suggestion originale:
Vous pouvez configurer le fournisseur de mise en œuvre de cache de second niveau à temps court TTL et / ou pour stocker 0 entrées de type d'entité particulier.
par exemple. si vous utilisez le Ehcache, vous pouvez le configurer dans ehcache.xml: *
<cache
name="com.problematic.cache.EntityName"
maxElementsInMemory="0" <<== this should effectively disable caching for EntityName
overflowToDisk="false" <<== Do not overflow any entries to disk
/>
Mise en veille prolongée dans la documentation Caching Ehcache.
Autres conseils
En terre cuite 3.1 et au-dessus, vous pouvez activer / désactiver la mise en veille prolongée 2e niveau Caches sur une base par région, à la fois dans la configuration (statique) et lors de l'exécution, en utilisant la console développeur Terracotta.
Vous pouvez également surveiller dans les statistiques en temps réel sur le cache et Hibernate, pour les noeuds individuels d'un cluster ou à l'échelle cluster.
La terre cuite est open source. Pour plus de détails, consultez terre cuite pour Hibernate .