Acabo de iniciar un simple proyecto de prueba de Java que gestiona algunas entidades que utilizan Hibernate y proporciona una interfaz REST para manipular estos objetos y proporcionar cierta lógica comercial adicional. La interfaz REST se crea utilizando RESTEasy y Jetty.Crear sesión de hibernación por solicitud
Todo funciona bien hasta el momento, pero tengo la sensación de que estoy escribiendo demasiado código repetitivo. Como no tengo mucha experiencia en estos frameworks de Java, me pregunto si alguien podría darme una pista sobre cómo mejorar la situación.
- Creting Hibernate sesiones por Solicitud
Bueno, por lo que yo entendía que tenga que crear una sesión de Hibernate por la petición y al final tengo que cerrarla. Así que actualmente todos mis métodos de servicio tener este aspecto:
Session session = HibernateUtil.getInstance().getSessionFactory().openSession();
...
...
...
session.close();
¿Hay alguna manera de eliminar estas dos líneas con el fin de hacer de alguna manera esto de forma automática? Actualmente mi servicio está registrado como singleton RestEASY. ¿Se solucionará el problema al cambiar a un recurso RESTeasy y al crear la sesión en el constructor? Creo que resolverá el problema de crear la sesión. ¿Pero dónde cerrarlo?
En C++, esto se puede hacer fácilmente creando un objeto de ámbito que cierra la sesión al final. Pero en Java?
- Cuando se realiza una solicitud REST de este tipo, debo verificar si hay una sesión válida (el usuario debe iniciar sesión previamente). ¿Es un ServletFilter el camino correcto para hacer esto?
General: ¿Hay algún otro patrón o estructura que deba considerar usar? Quiero decir que quiero que sea lo más simple posible, y sobre todo porque no tengo tanta experiencia, no quiero terminar usando Spring o cualquier framework de peso pesado. Parece que estoy acostumbrado a la simplicidad de Python y Django, pero para este pequeño proyecto tengo que usar Java.
¡Hasta ahora!
Bien, pero ¿dónde cierro la sesión? – duselbaer
En el caso de struts2, puede usar interceptores para inicializar y cerrar el objeto de sesión. –