Vous cherchez un très bon article qui comprend des stratégies/bugs/solutions de contournement. Je préférerais une solution JPA pure mais je sais qu'Hibernate offre beaucoup d'extensions.Quelqu'un peut-il me signaler une ressource particulièrement bonne sur JPA/Hibernate fainéant/désireux aller chercher?
Répondre
Je ne suis pas sûr de ce que vous cherchez exactement. Mais pour mettre est simplement, LAZY
signifie simplement qu'une association enfant ne sera pas chargé lors du chargement du parent, il sera chargé lorsque demandé explicitement par l'application. EAGER signifie qu'une association enfant sera chargée lors du chargement du parent.
En général, LAZY
est de meilleures performances (lorsque vous n'avez pas besoin ou que vous voulez charger un graphe d'objets entiers). Mais en fonction de la situation, il se peut qu'il soit sous-optimal ou conduise au fameux problème "N + 1 SELECT" (en itérant sur une liste de N entités, l'accès à une association LAZY
déclenchera un autre SELECT, résultant en 1 + N SELECT au fin). Selon la situation, une association EAGER
- ou un FETCH JOIN
pour pré-lier l'association - est préférable.
Je ne sais pas quelle partie ne sait pas, mais voici quelques ressources qui pourraient aider:
- wiki Hibernate
- A Short Primer On Fetching Strategies (de l'époque pré JPA, mais les concepts s'appliquent encore)
- Some explanations on lazy loading (one-to-one)
- articles
Voir aussi:
- Hibernate documentation de base
- JPA 1,0
- Section 4.4.5.3 "Fetch Rejoint"
livre "Java Persistence avec Hibernate" par Bauer et King, chapitre 13 " Optimisation de la récupération et de la mise en cache ". Vous devriez être en mesure de trouver une copie du livre en ligne.
Les concepts sont clairs, je suis à la recherche d'une discussion sur les stratégies. Je vais vérifier vos liens, tnx. –