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 :

[Debutant] one-to-many etc..


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut [Debutant] one-to-many etc..
    Bonjour,

    Je vais probablement passer pour un attardé, mais j'ai un peu de mal avec hibernate.

    Jusqu'ici, quand je faisais des bases de données, je faisais ça à l'arrache, en rajoutant des id pour faire des liens entre les tables, plutot que d'utiliser des foreign keys.

    Donc la, j'essaye de faire ça proprement.

    Dans la doc hibernate, il y a un exemple d'utilisation (l'exemple pere/fils) avec le mappage détaillé et tout.

    Du coup, je sais comment entrer la relation many-to-one et faire un set inverse.

    Ma question, c'est : comment ça se passe du coté java ? On déclare un attribut pour la foreign key ? Pour les sets et compagnie, il y a qqchose à faire ? Dans leur exemple il semblerait que la classe pere possède une liste de fils dans ses attributs.. Bref, c'est un peu flou tout ça.

    Donc si quelqu'un pouvait m'éclairer, je lui en serais reconnaissant, merci
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    En fait, je vais donner un exemple, histoire d'avoir une explication plus pratique :

    J'ai une table Company, avec un code composé de 5 caractères pour clé primaire, et d'autres attributs, comme le nom complet, l'adresse etc..

    J'ai aussi une table Product, avec comme clé primaire un code produit, la clé de company en foreign key pour faire le lien, et d'autres attributs.

    Pour un contrat il peut y avoir 0-N produits, et pour un produit il y a un seul contrat.

    Donc l'idée, c'est que dans le mappage de Product, je rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <many-to-one name="company" column="company_code" not-null="true"/>
    Pour le set (donc si j'ai compris, c'est la list que je rajoute dans la classe java Company) je met ça dans le mappage de Product :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <set name="products" inverse="true">
        <key column="company_code"/>
        <one-to-many class="Product"/>
    </set>
    Du coup, dans ma classe Company j'ajoute bien cette liste ? de quel type ? Et puis, c'est un set ou une list ? Et dans la classe Product, je met un lien vers Company pour emuler la foreign key ?

    Bref, j'ai aucune idée de comment faire en pratique.
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    Encore moi :

    J'ai mieux lu la doc, et pour ce qui est de déclarer la liste, ça passe :

    Dans ma classe company, il y a un Set de products, et je déclare une clause set dans le mappage de company :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <set name="products" inverse="true">
        <key column="company_code"/>
        <one-to-many class="Product"/>
    </set>
    La partie qui me pose toujours problème, même après relecture de la doc, c'est ce qu'on doit déclarer dans la classe Product.

    Est ce que la clause many-to-one du mappage de product doit apparaitre dans la classe java Product ? genre un private Company myCompany; ?
    Ou est ce que ça n'a aucun rapport ?

    Merci de m'aider
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  4. #4
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Auccun rapport?
    En fait cela dépend du type d'association que tu veux ... Si tu veux une relation unidirectionnele, ce que tu cite plus haut, c'est nickel.
    En revanche, si tu souhaite avoir une relation bidirectionnelle, tu devra déclarer un champ company dans ta classe Product et egalement dans ton fichier de mapping.

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    Ok, j'ai l'impression que je confonds tout.

    Le bidirectionnel, ça voudrait dire que si je fait une requete pour chopper un product, dans ma class Product, je peux mettre un attribut Company et l'objet sera loadé direct ? ou c'est un company_code qui serait loadé ?

    Je suis désolé de mettre autant de temps à comprendre, mais j'ai trouvé nulle part un exemple détaillé, qui montre le mappage java, le mappage hibernate, et les cas d'utilisations.

    En gros, j'ai un produit, que je récupère avec session.load().
    Je veux avoir la companie de ce produit.
    Habituellement je ferais une autre requête, genre select where c.code = p.code.

    Mais ça c'est ce que je fais en général, quand je n'utilise pas de foreign key, ni rien d'un tant soit peu évolué.

    Donc si qqun pouvait, à défaut de m'expliquer, m'orienter vers un site clair et précis, ou autre, je lui en serait reconnaissant.
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    Bon j'ai fini par trouver la plupart de mes informations.
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debutant] absence des one-to-many et many-to-one
    Par tck-lt dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/12/2006, 12h33
  2. [Hibernate] Relation one to many
    Par BRAUKRIS dans le forum Hibernate
    Réponses: 2
    Dernier message: 23/08/2006, 11h51
  3. [hibernate] relation one-to-many avec plusieurs clés
    Par seb_fou dans le forum Hibernate
    Réponses: 6
    Dernier message: 16/03/2006, 14h47
  4. [debutant]Compilation : too many types in declaration
    Par Battosaiii dans le forum Débuter
    Réponses: 15
    Dernier message: 03/11/2005, 13h36
  5. [EJB2.1 Entity] [CMR] Relation One to Many
    Par hamed dans le forum Java EE
    Réponses: 2
    Dernier message: 31/12/2003, 14h26

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