Est-ce possible de configurer hibernate pour désactiver le lazy par défaut ?
(je ne trouve pas de propriété correspondante).
Cordialement
Version imprimable
Est-ce possible de configurer hibernate pour désactiver le lazy par défaut ?
(je ne trouve pas de propriété correspondante).
Cordialement
De mémoire le lazy loading est par défaut depuis Hibernate 3.
C'est à mon avis une bien mauvaise idée de le désactiver.
Tu risques de charger beaucoup de données et les performances de ton application s'en ressentiront.
Si tu peux, mais il faut le faire au sein d'une session Hibernate.
Soit tu libères ta session Hibernate après le rendu de la vue, voir le pattern openSessionInViewFilter, soit tu effectues tes chargements avant le rendu de la vue quand tu es en présence d'une session Hibernate active.
+1.
De plus, si tu utilise des requetes HQL, il est possible, quand tu fais une jointure, d'ajouter le mot-clé "fetch" pour charger les données issues de la jointure (dans le cas où la propriété est à LAZY).
NB : ne jamais mettre EAGER sur toutes les jointures. C'est mal !
très très très très mauvaise pratique!
Je ne sais pas l'idée qui est derrière mais sache que si ta préoccupation c'est de pouvoir charger les enfants, même si tu es en LAZY=TRUE, tu as toujours accès à l'ID de l'enfant. Donc si tu veux charger l'objet, tu n'as qu'à exécuter ta méthode findById sur le DAO de l'enfant par exemple.
Le risque que tu as à faire LAZY=FALSE partout, c'est de charger toutes tes données de ta DB en mémoire et de l'exploser.