Ich habe eine entity
A und es ist definiert als @Cacheable
. Und ich habe Abfrage-Cache laden die entity
A unter angegebenen Cache-Bereich sagen "regionA". Dies wird durch setHint
und aktivierten Cache erreicht.Infinispan 2LC: Entity-Cache mit im Query-Cache angegebenen Regionen
Was die Einstellungen in wildfly
, The regionA
ist ohne eviction
und expiration
als 1 Tag konfiguriert, wo als die entity
Cache wie unten Standard eviction
und expiration
let sagen hat.
<local-cache name="entity">
<transaction mode="NON_XA"/>
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="1000000"/>
</local-cache>
<local-cache name="local-query">
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="regionA" statistics-enabled="true">
<eviction strategy="NONE" max-entries="-1"/>
<expiration lifespan="86400000" max-idle="14400000"/>
</local-cache>
Jetzt, wenn ich zum ersten Mal ausführen, gibt es keine Abfrage-Cache-Ergebnisse, daher SQL zum Abrufen der Entität ausgeführt wird. Und später scheint der 2. Lauf, 3rd aus dem Cache regionA
und damit in Ordnung zu sein. Aber nach 18 Stunden habe ich versucht, dieselbe Abfrage auszuführen, und es sieht so aus, als ob die Abfrage erneut ausgeführt wird.
Aber ich nehme an, wenn der Abfrage-Cache als "1 Tag" Ablauf konfiguriert ist, warum läuft es wieder SQL
? Ist der Cache entity
zu diesem Zeitpunkt abgelaufen? Der Cache entity
nimmt also keine Cache-Bereich-spezifischen Einstellungen? Wie Sie diese in der spezifischen Cache-Region gespeicherten Entitäten unterscheiden können, folgen Sie den regionsspezifischen Einstellungen.
Danke.
Danke für das Finden. Gibt es eine Möglichkeit, die Entity anzugeben, die die Konfiguration von regionA Cache verwendet und sie in der angegebenen Cache-Region speichert? Weil jede Entität standardmäßig eine eigene Region erstellt. – ulab
Sie müssen Hibernate 'org.hibernate.annotation.Cache' verwenden, um die Region zu definieren. Oder setze dies extern über die 'orm.xml'. –
Danke ich habe es. Mit hibernate.cfg kann ich also ALLE Entitäten so konfigurieren, dass sie die angegebene Region oder EACH-Entity verwenden, um die angegebene Region zu verwenden. Es ist jedoch nicht möglich, nur die Entitäten anzugeben, auf die in einer Abfrage mit Cache-Region als regionA verwiesen wird. Recht? – ulab