Colecciones & Fetch & Lazy ( Hibernate )

Para entender mejor como se trae Hibernate la información de la base de datos, podemos hablar de dos conceptos: “cuando” se trae la información de la relación y “como” se la trae (es decir que SQL utiliza).

Lazy :

Al especificar una relación en un mapeo de Hibernate usaremos el atributo “lazy” para definir el “cuando”.

Por defecto lazy es igual a true. Esto significa que la colección no se recupera de la base de datos hasta que se hace alguna operación sobre ella.

Si fijamos lazy a false, cuando se recupere la información de A también se traerá toda la información de los objetos relacionados de B (este era el comportamiento por defecto en la versión 2 de Hibernate).

Fetch :

Por defecto fetch es igual a select. Esto implica que para recuperar cada objeto de B se lanzará una nueva consulta a la base de datos.

Si fijamos el valor de fetch a join, en la misma consulta que se recupera la información de A también se recuperará la información de todos los objetos relacionados de B. Esto se consigue con un left outer join en la sentencia SQL. ( Más eficiente )


Información sacada de: http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=hibernateJoin

No hay comentarios: