-
Chargement via Hibernate
Bonjour,
Je suis un débutant en Hibernate et j'aurais concernant le chargement d'objets.
Voici une description simplifiée de la base de données sur laquelle je me base :
LIVRE (clé primaire : id_livre) : id_livre, titre_livre
TYPE_LIVRE clés primaires : id_livre et type) : id_livre (clé étrangère), type
Donc concrètement, on stocke les types (multiples) de livres.
Via Hibernate Synchroniser, j'ai créé le fichier de connexion à la base ainsi que les fichiers de mapping pour les deux entités LIVRE et TYPE_LIVRE. Les classes ont été générées et tout se passe bien.
Seulement, lorsque j'essaie de récupérer les informations du livre 5 par exemple (session.load(Livre.class, new Integer(5));), j'ai l'impression qu'il charge "tout l'arborescence" de mon livre, donc pas seulement son titre, mais également la liste de ses types...
Existe-t-il un moyen de ne pas lancer le chargement 'en profondeur', de manière à ne charger que les données d'une table précise ? Pour reprendre l'exemple précédent, j'aimerais pouvoir charger le contenu de la table LIVRE pour l'identifiant 5, sans avoir à charger ses types.
En vous remerciant d'avance pour vos réponses,
Arnaud
-
ca s'appelle le lazyloading (chargement à la demande). Il suffit de l'activer dans ton fichier de mapping, sur la relation livre -> types, pour que hibernate ne charge cette liste que lorsque tu tentera d'y accéder.
Si tu n'active pas le lazyloading, hibernate va effectivement charger toute l'arborescence, avec le risque de charger recursivement toute la base de données en mémoire :)