Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/01/2007, 06:50
Avatar de pyanqn
pyanqn
 
Fecha de Ingreso: noviembre-2005
Mensajes: 331
Antigüedad: 18 años, 5 meses
Puntos: 8
Exclamación Hibernate + lazy collections

Hola.

El problema que necesito resolver es el siguiente. Tengo un componente ToolBar que, posee caracteristicas para navegar registros, por medio de botones siguiente, anterior, primero, último. El tema es que necesito pasarle a mi componente toolBar una List, con los elementos que navegará. El tema es que como uso hibernate, quiero que la carga de los elementos sea Lazy, ya que es muy probable (90%) que contenga muchos datos!!! Bien lo que hago es indicar que la clase que quiero que navege sea Lazy pero, al parecer me esta cargando todos los objetos en la lista. Lo que hago es:


try{
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
java.util.List propietarios = (java.util.List) session.createQuery("from Propietario order by apellido,nombre").list();
session.getTransaction().commit();
barraNavegacion1.setResultSet(propietarios); /*Indico a mi componente cual es la coleccion a navegar */

} catch (Exception err) {
System.out.println("Error!");
err.printStackTrace();
}

Por lo que he leido, para poder utilizar carga bajo demanda, es necesario que la session que inicio la carga o la que realizo la consulta lazy, debe estar abierta.

Lo que he probado, es que todos los registros de mi base son cargados en la lista (propietarios), pero no de forma Lazy, pues ya cerre la conexion!!!! Por cierto uso Hibernate 3.2, MySql 5.0.

Bueno si pueden ayudarme a resolver este asunto lo agradeceria.

Otra cuestion que pense, pero no es adecuada a este problema, es que sea mi componente el que se encarge de cerrar la session. Pero, como es posible que la ventana (swing) se mantenga abierta. La session se deberia mantener abierta, por tiempo indeterminado.

Agradeceria alternativas.