IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Chargement des données


Sujet :

Hibernate Java

  1. #1
    Membre du Club Avatar de Nikamura
    Inscrit en
    Avril 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 71
    Points : 54
    Points
    54
    Par défaut Chargement des données
    Bonjour,

    J'ai deux tables (respectivement Table1 et Table2) dans ma base de données. Elles sont liés par une clé étrangère, de sorte que un tuple Table1 peut être liés a plusieurs de la Table2.
    Dans le fichier Table1.java j'ai une variable de collection d'objets de Table2.

    Ma question est la suivante : lorsque je fais un SELECT d'un attribut de Table1, est ce que la collection d'objets de Table2 est aussi chargée, ou bien dois je le faire manuellement?

  2. #2
    Membre du Club Avatar de Nikamura
    Inscrit en
    Avril 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 71
    Points : 54
    Points
    54
    Par défaut
    Bon ben je me réponds a moi même j'ai fait quelques petites recherches, sur la référence Hibernate notamment et j'ai vu qu'il fallait renseigner l'attribut "lazy" (feignasse en français) dans le fichier de mapping de la classe de Table1. Par défaut, "lazy" est a "true". Donc il faut juste rajouter lazy="false" dans le champ "class" du fichier de mapping.

    Si lazy="false", il faut faire attention car suivant les contraintes de la table (clés étrangères) il est possible du coup de charger toutes les données de la base, ce qui a un gros impact sur le temps de chargement.

    Bon c'est une piste hein, je sais pas si c'est la solution puisque j'ai pas encore testé !

  3. #3
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    Salut,

    Peut etre voir aussi du coté de fetch="join".

    J'ai pas encore très bien compris l'impact de chacun (lazy="false" et fetch="join"), mais cela permet de charger une requete (et donc les objets) par le biais d'un seul select.

    Si qqun avait plus de détail sur leur fonctionnement respectif, ca m'interesse aussi

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    L'idée est de laisser lazy=true (valeur par défaut à partir d'Hibernate 3) et d'utiliser le fetch au cas par cas dans une requête HQL ou Criteria pour charger les collections dont on a besoin.

Discussions similaires

  1. Chargement des données sur mysql
    Par ecom_adil dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 25/02/2008, 17h08
  2. chargement des données d'un datawarehouse syntaxe oracle
    Par mehdiing dans le forum Administration
    Réponses: 3
    Dernier message: 01/05/2007, 11h23
  3. Processus de chargement des données (avec talend)
    Par szoubir dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 27/04/2007, 12h17
  4. Chargement des données d'une classe vers une autre
    Par nosdev dans le forum Access
    Réponses: 1
    Dernier message: 16/01/2007, 14h44
  5. Réponses: 2
    Dernier message: 20/11/2006, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo