Dies hängt von der JPA-Implementierung und Konfiguration ab.
In EclipseLink wird eine Verbindung standardmäßig nur für die Dauer einer aktiven (schmutzigen) Transaktion gehalten. von der ersten Modifikation oder Sperre bis zum Festschreiben oder Zurücksetzen. Bei nicht transaktionalen Abfragen wird eine Verbindung auf Anforderung erfasst und nach der Ausführung der Abfrage zurückgegeben. Dies ermöglicht eine maximale Nutzung des Verbindungs-Poolings. Normalerweise macht em.close() also nichts.
Sie können dies mit der Persistenzeinheit-Eigenschaft "eclipselink.jdbc.exclusive-connection.mode" konfigurieren. "Immer" hält eine Verbindung für das Leben des EntityManager.
Sie können auch verschiedene Verbindungspools für Transaktionen im Vergleich zu nichttransaktionalen Lesevorgängen verwenden. Dies ist bei JTA nützlich, da Sie eine Nicht-JTA-DataSource für Lesevorgänge verwenden können.
Ich fand diese Beschreibung der Verbindung freisetzenden Strategien mit Hibernate: http://docs.jboss.org/hibernate/stable/core.old/reference/en/html/transactions-connection-release.html – GlenPeterson