Ich verwende JPA, um Datensätze in Oracle-Datenbank persistent zu machen. Jedes Mal, wenn ich die Anwendung ausführe, geht sie in ein bestimmtes Verzeichnis und analysiert jede einzelne darin enthaltene Datei und lädt sie in Tabellen. In der Regel sind Tausende von Dateien zu verarbeiten.Sollte ich es vermeiden, EntityManagerFactory zu oft zu erstellen
Eine neue EntityManagerFactory wird jedes Mal erstellt, wenn ich eine Datei verarbeite und wenn der Datensatz eingefügt wird. Daher wird der EMF bei jedem Lauf tausende Male geöffnet. Wenn ich es debugge, entdeckte ich, dass die Erstellung von EMF der zeitaufwendigste Schritt ist, der mehr als 90% der Laufzeit benötigt. Im Durchschnitt dauert das Erstellen eines neuen EMF ca. 2-3 Sekunden. Vielleicht sollte ich die EMF-Verbindung einfach zu Beginn der Anwendung öffnen, bevor die Iteration der Dateien beginnt? Ist es gut, EMF die ganze Zeit offen zu haben?
Eine EntityManagerFactory ist threadsicher und hat, wie Sie festgestellt haben, viele Einstellungen, um alles, was für eine Persistenzeinheit benötigt wird, zu erhalten, zu laden und zu überprüfen. EntityManager sind leicht, aber nicht fadensicher - diese Objekte sollten bei Bedarf erhalten werden, während der EMF zentral/statisch geladen wird. – Chris
@Chris Danke für die Erklärung des Unterschieds. Bitte mach es eine Antwort und ich werde es schließen. – ddd