open session en hibernate

Buenas tardes como estan, me surge la siguiente duda: Al abrir una sesion con Hibernate o sea al momento de hacer el open (abrir una session con Hibernate), esto se demora cierto tiempo, y en un entorno real seria muy costoso este tiempo que se demora en abrir una session, una forma de solucionar esto es abriendo una sola session y que el usuario relice todas sus operaciones con esta, para no estar abriendo y cerrando sessiones, un problema que se puede presentar es que al no cerrar la session luego de un persist por ejemplo este no guarde los cambios en la base de datos, mi preguta es cual es la mejor forma de manejar esto? o si existe algun patron para manejar esto, una forma puede ser conectando mediante jndi pero no estoy muy seguro si se resolverian los problemas de tiempo de respuesta al momento de abrir y cerrar sesiones, o aplicando algun filtro que se encargue de esto. Que me aconsejan?

gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

pool

No puedes usar una sola sesión en tu aplicación. Tampoco te conviene tener una sesión de hibernate abierta todo el tiempo durante la sesión de un usuario. Recuerda que cada sesión de hibernate tiene una conexión JDBC debajo. Si tienes mil usuarios con sesiones abiertas, vas a tener mil conexiones abiertas (digo, si es que tu RDBMS te lo permite).

Lo mejor es que tengas un pool de conexiones a base de datos, y entonces la creación y destrucción de sesiones de hibernate tendrá un desempeño mucho mejor que el que tienes ahora.