El patrón OpenSessionInViewFilter es efectivo. Esto abre una sesión de Hibernate & lo vincula a su hilo, durante el procesamiento de cada solicitud. OpenSessionInView también amplía la sesión y la capacidad de carga para visualizar la representación & de la capa de vista, lo que reduce la complejidad del acoplamiento & (al permitir que 'solo funcione').
Mis filosofías realmente no concuerdan con la gestión de transacciones declarativas basadas en aspectos. Me gusta hacer que los principales eventos de cambio de estado/ciclo de vida sean 'explícitos', ya que deben ser absolutamente definitivos, no dependen débilmente de múltiples capas ocultas & ocultas, que pueden funcionar o no.
Proporciona un punto para depurar en.
La confirmación de TX es solo una línea de código; pero es el más importante sobre el que quieres romper el punto. Ya no sintácticamente, que una declaración 'transaccional'; pero muchísimo más definido.
Francamente encuentro "comandos de usuario" o "solicitudes", que son el lugar adecuado para iniciar una transacción & transaccionalidad de control, debe estar bien estructurado, bien identificado & bastante explícito dentro de la aplicación.
(tuve problemas para conseguir las cosas aspecto de clase de carga de trabajo, tratando de que cuando salió por primera vez. Mi evaluación es que en comparación con el código OO bien escrito, aspecto sólo se ha limitado valor marginal.)
Consejo: Generalmente hago una clase de ayuda, para que sea realmente conveniente para obtener la sesión & para confirmar la transacción.
HbHelper o somesuch.
Gracias por los enlaces y por mencionar que HibernateTemplate no se recomienda ahora, creo que iré con la forma Declarative Transaction. – artjomka
Buena idea. El enfoque de plantilla sigue siendo válido para REST, JMS, LDAP y posiblemente otros, pero para ORM, el enfoque transaccional es más potente y también más fácil. –
Con el soporte Hibernate 4 de Spring 3.1, HibernateTemplate ya no es simplemente "no recomendado"; ha sido eliminado por completo. Consulte https://jira.springsource.org/browse/SPR-8096 – SteveT