bonjour,
je cherche la difference entre EAGER et LAZY dans le fetch d'hibernate.
j'ai regardé sur internet et j'arrive pas à comprendre vraiment la difference entre un "fetch=FetchType.LAZY" et "fetch=FetchType.EAGER"
Merci!!!
bonjour,
je cherche la difference entre EAGER et LAZY dans le fetch d'hibernate.
j'ai regardé sur internet et j'arrive pas à comprendre vraiment la difference entre un "fetch=FetchType.LAZY" et "fetch=FetchType.EAGER"
Merci!!!
C'est assez simple. Lorsque tu as une collection dans un objet, tu as deux possibilités :
- Soit on effectue la jointure sql, dès que l'on récupère l'objet et donc initialise la collection. C'est le mode "eager".
- Soit on n'effectue la jointure sql que à la demande, c'est à dire dès que l'on aura besoin de la collection. C'est le mode "lazy".
Il faut savoir que l'on recommande évidement le mode "lazy" car on ne fait pas des jointures inutilement surtout si on n'a pas besoin de cette collection. La stratégie que l'on utilise si on besoin de la collection, c'est que l'on crée une requête HQL en précisant à la même les jointures : left outer join, etc.
http://www.hibernate.org/315.html
Partager