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.


martes, 31 de mayo de 2011

JPA : Lazy vs. Eager


Las entidades y sus atributos pueden ser cargados de dos formas:
  • LAZY: Cuando se cargan de forma “perezosa”, es decir, se cargan en el momento en que se requieren.
  • EAGER: Cuando se cargan de forma “proactiva”, es decir, al momento de cargar la entidad “owner” de la relación.
Si ves televisión ... acuerdate de este programa para asociarlo con estos conceptos :
 


En términos de JPA, se usa el atributo “fetch” acompañando a la anotación de la relación e indicando el valor de FetchType.LAZY o FetchType.EAGER.

Hay que indicar que las opciones de LAZY o EAGER se comportan diferente según estemos en un ambiente Java SE o EE ( y según la implementación JPA que usemos )... para eso leer la documentación nos servirá de mucho.

Cuando se trabaja con EclipseLink en un entorno Java EE hay una facilidad que permite "mejorar" (se conoce como "weaving") las clases java de forma automática.

Cuando se usa EclipseLink en un ambiente donde el "weaving" no es automático ( como en Java SE ) existen dos opciones:
  1. La primera y más fácil es usar el parámetro -javaagent como argumento para la máquina virtual Java indicando la ruta hacia el eclipselink.jar.
  2. La segunda forma es usando el "static weaver" que es una nueva compilación que debe hacerse sobre las clases ya compiladas por la JVM.

Es importante analizar esto, porque puede darse el caso de definir una relación OneToMany como LAZY y al momento de ejecutar la aplicación podríamos observar que se cargan todas las dependencias de forma automática.





1 comentario:

  1. Hola, interesante lo que comentas, no obstante no logre que se onetomany se comportara como Lazy, pese a haber probado los dos métodos que sugieres.

    ResponderEliminar