Gestión de sesiones con Hibernate
He encontrado que la gestión de sesiones de Hibernate con el LazyLoading y utilizando Swing como interfaz de usuario puede ser un problema. Me da la impresión de que Hibernate se ha diseñado orientado al desarrollo en entorno web con J2EE.
El problema que me encuentro es el siguiente:
- Con lazy=false Hibernate me carga todos los objetos en el momento del arranque, ralentizando una barbaridad el arranque porque alguna de las tablas tiene muchas entradas (varios cientos de miles de registros).
- Con lazy=true tengo el problema de que en el momento de que me pide uno de los objetos solicitados salta una excepción porque la sesión ya se ha cerrado.
En este blog ya se hace un análisis de la situación y de por donde van los tiros, dando información de como se haría el tratamiento con Hibernate+Spring o con Hibernate3. En una página de Hibernate hablan del problema de unir Hibernate y Swing.
Con el nuevo esquema de gestión de sesiones de Hibernate 3.1 se necesita un TransactionManager obligatoriamente, por lo que o se ejecuta la aplicación dentro de una servidor de aplicaciones o añadimos uno externo (JTOM), aunque en este thread del foro de Hibernate (que discute sobre el error que se se produce usando el esquema de DAOs que se usa en la última versión del CaveatEmptor cuando se ejecuta sin JTA) se dice que en una proxima entrega de Hibernate 3.1 ya no será obligatorio la utilización de JTA. El caso es que yo me he bajado la última versión de Hibernate y me sigue saliendo la excepción.
También he leido una página de Hibernate que explica como tratar con sesiones y transacciones.
Otra opción sería analizar el uso de la pre-versión de EJB 3.0 de Hibernate como se describe en este blog, aunque necesitaría informarme de las complicaciones que podría añadir.

0 Comments:
Publicar un comentario
<< Home