2010-07-28 23 views
24

Soy bastante nuevo en los ORM. Empecé a leer libros y documentos sobre Java Persistence API con Hibernate.¿Cuándo deberíamos cerrar EntityManagerFactory?

Me acabo de preguntar, cerrar EntityManagerFactory es similar con el cierre de la conexión de la base de datos jdbc?

¿Deberíamos cerrarlo después de cada persistencia/actualizar/eliminar o no? Si no lo cerramos, ¿la conexión de la base de datos permanecerá abierta?

+0

Si un EM posee conexiones, ¿cómo podría una conexión permanecer abierta si el "host" o "principal" está cerrado? Tiene sentido ? –

Respuesta

32

Me acabo de preguntar, el cierre EntityManagerFactory es similar con el cierre de la conexión de la base de datos jdbc?

Esto no es exactamente cierto, pero cerrar un EntityManagerFactory sería más cerca de destruir todo un conjunto de conexiones. Si desea pensar en la conexión JDBC, debe pensar EntityManager.

¿Deberíamos cerrarlo después de cada persistencia/actualizar/eliminar o no?

la creación de un EntityManagerFactory es una operación muy costosa y se debe hacer una vez durante la vida útil de la aplicación (que close que al final de la aplicación). Entonces, no, no debería cerrarlo para cada operación de persistencia/actualización/eliminación.

El EntityManagerFactory se crea una vez por todas y por lo general obtener una EntityManager por solicitud, que está cerrada al final de la solicitud (EntityManager por solicitud es el patrón más común para una aplicación cliente/servidor multiusuario).

Si no lo cerramos, ¿permanecerá la conexión de la base de datos abierta?

como se insinuó, que es el EntityManager que en realidad está asociado a una conexión de base y cerrar la realidad EntityManager dará a conocer la conexión JDBC (con mayor frecuencia, devolverlo a una piscina).

Cuestiones relacionadas