Ich bin neu bei JPA / OpenJPA und habe festgestellt, dass wenn ich EntityManager.clear()
nicht anrufe, nachdem ich Entitäten beibehalten habe, bekomme ich OutOfMemoryError
(ich füge immer neue Entitäten in einer Schleife hinzu). Ich bin mir nicht sicher, ob dies das erwartete Verhalten ist, oder es ist einfach und OpenJPA 1.2.1 Glitch.
Muss ich also die Entitäten explizit trennen? Wenn ich nicht bin, ist es trotzdem eine gute Übung?
Hängt davon ab, wie viele Objekte Sie in den Persistenzprozess einbringen (lesen). Wenn Sie mit großen Zahlen umgehen (oder einige der Objekte sind groß), kann die Verwendung von clear () sinnvoll sein. Jedes Mal, wenn ein Objekt gelesen wird, sollte es durch die JPA-Impl in den L1-Cache gestellt werden.
Es hört sich an, als wäre irgendwo in Ihrem Design etwas nicht in Ordnung. In der Regel wird die Entität getrennt, sobald sie außerhalb des Bereichs des Entity Manager liegt. Und das ist einer der Gründe, warum Sie Beziehungen nicht lazy laden können, außerhalb des Bereichs.
Soweit es meine Erfahrung betrifft, habe ich selten em.clear () benutzt, wenn überhaupt. Ich habe die Hibernate-Implementierung und Toplink Essentials verwendet. Keine Erfahrung mit OpenJPA, noch.
Tags und Links java memory-leaks jpa openjpa entitymanager