So setzen Sie die Einschränkung in EntityManager (JPA) L1 oder L2 -Cache -Größe
-
25-09-2019 - |
Frage
So setzen Sie L1- oder L2-Cache-Größenbegrenzung. Ich besorgt, die Cache-Größe zu erhöhen. Eine Möglichkeit ist die Definition von Zeitlimit für Cache, aber ich möchte wissen, dass es möglich ist, eine Einschränkung für die Cache -Größe zu machen oder nicht.
RGDS Navid
Lösung
So setzen Sie L1-Cache-Größenbegrenzung
Du kannst nicht. Die einzige Option ist zu clear
Der Persistenzkontext manuell in regelmäßigen Abständen, wenn Sie "kontrollieren" möchten (eigentlich, clear
ist sehr aggressiv, es entfernt es alle Einheiten) seine Größe.
So setzen Sie L2-Cache-Größenbegrenzung
Dies hängt vom zugrunde liegenden Cache -Anbieter ab. Mit anderen Worten, dies geschieht durch die Konfiguration der L2 -Cache -Implementierung. Zum Beispiel hat Ehcache a maxElementInMemory
Parameter.
Was passiert in L1?! Wie viel Entitäten werden im Speicher im Gedächtnis sein? w/o irgendwelche Einschränkungen?!
So viel wie Sie einfügen, bis ein späterer Fall OutOfMemoryError
, daher die Notwendigkeit zu clear
ausdrücklich:
- bei großen Chargenjobs (auch wenn sie in einer einzigen Transaktion auftreten)
- Wenn ein langlebiger
EntityManager
wird genutzt
Das übliche Muster besteht jedoch darin, eine kurzlebige zu verwenden EntityManager
Und die meisten Anwendungsfälle sind keine Batch -Jobs, daher ist dies kein Problem.
Siehe auch
- JPA Wiki -Buch