2010-07-28 15 views
24

Ich bin ziemlich neu auf dem ORM. Ich beginne gerade, Bücher und Dokumente über Java Persistence API mit Hibernate zu lesen.Wann sollten wir die EntityManagerFactory schließen?

Ich frage mich nur, schließende EntityManagerFactory ist ähnlich mit jdbc Datenbankverbindung schließen?

Sollten wir es nach jeder Persistenz schließen/aktualisieren/löschen oder nicht? Wenn wir es nicht schließen, bleibt die Datenbankverbindung geöffnet?

+0

Wenn ein EM Verbindungen hält, wie könnte eine Verbindung geöffnet bleiben, wenn der "Host" oder "Eltern" geschlossen ist? Ist das sinnvoll ? –

Antwort

32

Ich frage mich nur, schließend EntityManagerFactory ist ähnlich mit jdbc Datenbankverbindung schließen?

Dies ist nicht ganz richtig, aber ein EntityManagerFactory Schließung wäre näher an einen ganzen Verbindungspool zu zerstören. Wenn Sie JDBC-Verbindung denken möchten, sollten Sie denken, EntityManager.

Sollten wir es nach jeder Persistenz schließen/aktualisieren/löschen oder nicht?

Erstellen ein EntityManagerFactory eine ziemlich teuere Operation und soll einmal für die Lebensdauer der Anwendung durchgeführt werden (Sie es am Ende der Anwendung close). Also, nein, Sie sollten es nicht für jede Persistenz/Aktualisierung/Löschung schließen.

The EntityManagerFactory ein für alle Mal erstellt wird, und Sie in der Regel ein EntityManager pro Anfrage erhalten, die am Ende des Antrags geschlossen ist (EntityManager pro Anfrage ist das häufigste Muster für eine Multi-User-Client/Server-Anwendung).

Wenn wir es nicht schließen, bleibt die Datenbankverbindung geöffnet?

Wie angedeutet, ist es die EntityManager ist, die tatsächlich zu eine Datenbankverbindung zugeordnet ist, und Schließen der EntityManager wird die JDBC-Verbindung tatsächlich freigeben (meistens, bringen Sie es zu einem Pool).

Verwandte Themen