Wie kann ich den Second-Level-Cache einiger bestimmten Einheiten in dem Ruhezustand deaktivieren, ohne Anmerkungen zu ändern

StackOverflow https://stackoverflow.com/questions/934133

Frage

Ich verwende Hibernate Second-Level-Cache in meiner Anwendung, für bestimmtes Geschäft Grund Ich kann die Einheit Anmerkung ändert mehr .

In meinem Projekt, abgesehen von der Datenbank aus dem Ruhezustand zu ändern, gibt es auch andere einheimische SQL, die durch Hibernate nicht gehen. Daher könnten die Hibernate Second-Level-Cache-Daten abgestanden sein, nachdem Datenbank von nativen SQL aktualisiert. Deshalb habe ich wollen die Second-Level-Cache für bestimmte Einheiten zu deaktivieren (programmatisch oder andere Art und Weise als Anmerkung zu ändern).

Vielen Dank im Voraus!

War es hilfreich?

Lösung

ACHTUNG: Wie Jens Schauder erwähnte, ist es unmöglich, Ehcache zu konfigurieren speichern 0 Elemente im Speicher durch maxElementsInMemory Einstellung = „0“, wie es effektiv entgegengesetzte Wirkung verursacht - setzt unbegrenzte Größe für den Cache. Dieses Verhalten wird nicht noreferrer"> Hibernate Caching Seite auf der Cache-Konfiguration Seite.

Ich habe schnell die Dokumentation überprüft und haben keine alternativen Ansatz noch nicht gefunden. Ich bin nicht in der Lage diese Antwort selbst zu löschen. : - (

Mein ursprünglicher Vorschlag:

Sie können die Implementierung Anbieter von Second-Level-Cache kurze TTL Zeiten und / oder speichern 0 Einträge eines bestimmten Entitätstyp konfigurieren.

z. wenn Sie die Ehcache verwenden, können Sie es in ehcache.xml konfigurieren: *

<cache
name="com.problematic.cache.EntityName"
maxElementsInMemory="0" <<== this should effectively disable caching for EntityName
overflowToDisk="false" <<== Do not overflow any entries to disk
/>

Siehe Hibernate Caching in Ehcache Dokumentation.

Andere Tipps

In Terracotta 3.1 und höher können Sie aktivieren / deaktivieren Hibernate 2nd Level Cache-Speicher auf einer Pro-Region-Basis, sowohl in der Konfiguration (statisch) und zur Laufzeit, mit der Terracotta Developer Console.

Sie können auch in Echtzeit-Statistiken über den Cache überwachen und Hibernate, für einzelne Knoten in einem Cluster oder Cluster-weit.

Terracotta ist Open Source. Für weitere Informationen Besuche Terracotta für Hibernate .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top