Bonjour,
Je m'interroge sur ces 2 options d'hibernate (que l'on peut indiquer dans un mapping de collection ou un mapping many-to-one, one-to-one ...)
1. Il semble que outer-join existe en hibernate v2 et v3 tandis que fetch n'apparait que dans la v3.
2. outer-join = true permet d'avoir une jointure et de charger en un seul select plusieurs éléments
Ex dans le fichier Mother.hbml.xml
Dans ce cas le chargement de mother et de child va se faire en un seul select. Que se passe t-il si lazy = true ?Code:
1
2 <many-to-one name="child" outer-join="true" lazy="false"/>
3. fetch. Je ne comprends pas la différence entre fetch = join et outer-join = true. la doc d'hibernate dit
Donc si fetch = join, est ce que outer-join et lazy ne servent à rien ?Citation:
Par ailleurs, une jointure "fetchée" (rapportée) permet d'initialiser les associations ou collections de valeurs en même temps que leur objet parent, le tout n'utilisant qu'un seul Select. Ceci est particulièrement utile dans le cas des collections. Ce système permet de surcharger les déclarations "lazy" et "outer-join" des fichiers de mapping pour les associations et collections.
4. On peut déclarer fetch et join dans le mapping mais aussi directement dans la requête. Ex de la doc hibernate :
Si le mapping et la requête n'ont pas les même "options" qui est prioritaire.Code:
1
2
3
4 from eg.Cat as cat inner join fetch cat.mate left join fetch cat.kittens
Merci de m'éclairer sur ce sujet