Bienvenida

Como todo en la vida, la innovación es la clave del éxito por lo que nos hemos visto en la necesidad de "evolucionar" este blog para abarcar muchos otros temas que estaban quedando de lado en nuestros cursos "oficiales".

Si deseas aprender o profundizar algunos temas en particular, no dudes en contactarnos.


miércoles, 1 de junio de 2011

JPA : Lazy vs. Eager ( parte 2 )

En el post anterior mencionamos los conceptos de One-To-many y Many-To-One y colocamos algunas entidades y programas de ejemplo que utilizaban el FetchType.EAGER.

En este post mostaré como configurar el entorno para que el LAZY funcione correctamente:

1) En primer lugar vamos a cambiar el fetchType en la clase "Customer1" :


2) Ahora ejecutamos el siguiente programa "main" que es el mismo del post anterior. Debería ejecutar un único Query sobre la tabla "tbcustomer":
Si nos fijamos en la consola, veremos que efectivamente se ejecuta un sólo query pero además sale un mensaje ... que NO es un error: {IndirectList: not instantiated}


El problema se origina en que dicho atributo es una colección de objetos y en la forma de cargalos. Como hemos definido que el objeto se carga de la forma LAZY, al referenciarlos hay un problema.

3) Para solucionar el tema, vamos a cambiar el código para leer la colección mediante un Iterator:



4) Sin embargo, podría ser que no funcione, entonces para asegurarnos, colocamos el javaagent con la ruta hacia el eclipselink.jar en las opciones de ejecución de la JVM: Click derecho al proyecto - Run As - Run Configuration y colocar la ruta donde está unicado el .jar:


Ahora sí debe funcionar la carga tipo LAZY.
Y si usas OpenJPA, el javaagent es openjpa-all-2.1.0.jar  y el provider es  org.apache.openjpa.persistence.PersistenceProviderImpl
 
Prueba y comenta este post.

2 comentarios:

  1. Ya que Homero me pide que comente lo hago, profesor esto tambien vendrá en el examen parcial del martes? .... Victor Aguirre

    ResponderEliminar
  2. Hola

    Nop ... este tema es un "Bonus pack" ... No viene.
    Es mas , lo que viene esta por ahi cifrado dentro de las PPT's y ejemplos de clase.

    Nos vemos

    ResponderEliminar