Estoy creando un sistema, donde cada solicitud del lado del cliente genera múltiples subprocesos en el lado del servidor. Cada hilo está usando uno o más DAO (algunos DAO pueden ser utilizados por más de un hilo a la vez). Todos los DAO se inyectan (@Autowired
) a mis clases de hilo por Spring. Cada DAO recibe SessionFactory
inyectado también.Gestión de sesiones de Spring + Hibernate en varios subprocesos
¿Cuál sería la forma correcta de administrar sesiones de Hibernate en estos DAO múltiples para no tener problemas debido al entorno multiproceso (por ejemplo, pocos DAO de diferentes hilos intentan usar la misma sesión al mismo tiempo)?
¿Sería suficiente que especifique hibernate.current_session_context_class=thread
en la configuración de Hibernate y luego cada vez en DAO simplemente use SessionFactory.getCurrentSession()
para hacer el trabajo? ¿Detectaría adecuadamente y crearía sesiones por hilo según sea necesario?
¿Qué hay de cerrar la sesión cuando el trabajo está hecho, se realiza automáticamente? – MounirReg
Cuando está Hibernate con Spring 3 o posterior, debe evitar establecer esta propiedad ya que Spring tiene su propia implementación de esto que es necesaria para que Spring administre las sesiones de Hibernate. http://stackoverflow.com/a/18842593/3826713 – UCJava