domingo, 10 de febrero de 2019

Errores Comunes con JPA

En los últimos meses he estado depurando una aplicación Swing que hace uso de JPA para la persistencia de datos. La integración presenta múltiples violaciones a las reglas de uso impactando en el rendimiento y confiabilidad de la aplicación.
En esta entrada voy a compartirles algunos errores muy comunes en el uso de JPA, conocerlos te ayudará a ser un mejor Ingeniero de Desarrollo de Software, creando aplicaciones de calidad, que siempre estén disponibles, haciendo más felices a los usuarios finales.

El ciclo de Vida de un EntityManager

Debes tener muy claro cual será el ciclo de vida de un EntityManager, recuerda que un EntityManager tiene asociado una cache (JPA First Cache). Un EntityManager es un objeto ligero, crear instancias no consumen mucho recurso, así que puedes crear tantas instancias de EntityManager requieras.
Una vez que termines de usar tu instancia EntityManager debes de cerrarlo explicita mente llamando al método close. No hacerlo puede dejar conexiones abiertas y no liberar la memoria ocupada por el cache. Algunos servidores tienen un máximo de conexiones permitido, al alcanzarlo el servidor se puede bloquear.
En cuanto a la cache, la aplicación se puede quedar sin memoria disponible causando una excepción del tipo Java Heap Space, cerrar el EntityManager libera el espacio ocupado por el cache.
No hay una regla especifica para decir el ciclo de vida de un EntityManager, pero ten presente la cache asociada y cerrar el EntityManager una vez que decidas terminar el ciclo de vida.
En una aplicación Web es un poco distinto porque es el contenedor Web quien gestiona el ciclo de vida de forma automática, el decide cuando crearlos y cuando cerrarlos.

Continuará...

No hay comentarios:

Publicar un comentario