style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

hibernate sesiones

hola, cada vez que hago en java sessionFactory.getCurrentSession().createQuery("query lo que sea"); consume bastantes recursos, si tengo k hacer un for bastante grande utilizando getCurrentSession se dispara el uso de la cpu, alguién tiene otra forma de hacer consultas?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Cierras tus sesiones?

Me parece que getCurrentSession() te da una nueva sesión si no existe una. Si ya existe una abierta te devuelve esa. Para estar más seguro, llámalo una sola vez y guarda la referencia a la sesión en una variable, la cual puedes usar después las veces que quieras dentro de tu mismo método (pero no quieras guardar la sesión de manera indefinida en esa variable, eso depende mucho del tipo de aplicación que desarrolles).
Y no olvides cerrar la sesión al final cuando ya no la necesites.

Imagen de ezamudio

Spring - Hibernate

Revisa también el soporte que Spring ofrece para Hibernate, te simplifica el manejo de sesiones porque las puede abrir y cerrar por ti, de modo que tus métodos ya no se preocupan de tener una sesión abierta y cerrarla al final (porque tienes que cerrarla en un finally para que siempre se cierre).

Solo necesitas una session

Que tal falcatin

Como dice ezamudio puedes usar spring para wrapear las sessiones de hibernate, ya que tiene algunas clases que te evitan el trabjar directamente con la sessiones y evitar dejar conexiones abiertas por el mal uso de las mismas. Si solo vas a usar Hibernate debes de leer la documentacion en lo referente a las sesiones, ya que solo necesitas usar una sesssion para realizar una bloque de trabajo, y no andar generando sessiones indiscriminadamente

En tu codigo

sessionFactory.getCurrentSession().createQuery("query lo que sea");

solo provocara que generes conexiones a la base de datos y no las estas cerrando

lo correcto deberia ser

Session session = sessionFactory.getCurrentSession();
//manejo de transacciones
//aqui tambien puedes iterar con tu for
Query q = session.createQuery("query lo que sea");
..
try
//ejecutas tu query

catch
//manejo de excepciones

finally
//cierras la session

Tambien te recomiendo le uso del patron DAO que te simplifica el uso de hibernate y el manejos de sesiones, las transacciones las puedes manejar con AOP

Espero que mis comentarios te ayuden de algo.

Saludos

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">