Sesión abierta de Hibernate a la vista: ¿Transacción por solicitud?

Estoy usando Hibernate con Spring en Tomcat. He estado leyendo y releyendo lo que he señalado.Página wiki de JBoss sobre el tema, y ​​eso ha sido de gran ayuda. Pero me deja con algunas preguntas.

La idea de iniciar una transacción para cada solicitud me preocupa. Supongo que podría limitar el filtro a ciertos controladores, tal vez poner todos mis controladores que necesitan una transacción en una ruta de pseudo "tx" o algo así. ¿Pero no es una mala idea usar transacciones si no sabe si va a necesitar una? Y si solo hago lecturas en alguna solicitud (lecturas que probablemente provengan de un caché), ¿no estaría mejor sin una transacción?

He leído publicaciones que mencionan cómo manejaron las transacciones en la capa de servicio, y me gustaría hacer esto con Spring. Pero entonces, ¿cómo se ve el código del filtro? Todavía quiero que la sesión esté disponible en mi vista para una carga lenta.

Si todo lo que tengo que hacer es llamarsessionFactory.getCurrentSession() en mi filtro, ¿cómo se "libera" de nuevo a la fábrica de sesiones para su reutilización? (Esperaba ver unsession.close() o algo así, incluso cuando se utilizan transacciones.) ¿Quién le está diciendo a la fábrica de sesiones que esa sesión se puede reutilizar?

Tal vez sea elbeginTransaction() ¿Llamada que enlaza una conexión de base de datos dada a una sesión dada durante la duración de una solicitud? De lo contrario, una sesión extrae conexiones db de la agrupación según sea necesario, ¿verdad?

Gracias por su paciencia con todas mis preguntas.

(Y si su respuesta va a ser un enlace a la documentación de Spring, simplemente me hará llorar. No quiere eso, ¿verdad? Voy a pagar con dinero real si la gente deja de responder las preguntas relacionadas con Spring que camino.)

Respuestas a la pregunta(2)

Su respuesta a la pregunta