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 :

Comment établir une relation entre deux tables


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Points : 53
    Points
    53
    Par défaut Comment établir une relation entre deux tables
    Bonjour,

    je cherche à établir une relation entre deux tables

    sauf que je n'ai pas compris l'utilisation du mot clé "set" dans les fichiers *.hbm.xml ...

    si quelqu'un pourrait m'aider à lier ces deux tables je serais très reconnaissant

    les deux tables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    CREATE TABLE `colors` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `color` varchar(30) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
    
    
    CREATE TABLE `coloru` (
      `user` varchar(20) NOT NULL,
      `id_color` int(11) NOT NULL,
      PRIMARY KEY (`user`),
      KEY `relation` (`id_color`),
      CONSTRAINT `relation` FOREIGN KEY (`id_color`) REFERENCES `colors` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    que dois-je ajouter dans mes fichiers .hbm.xml

    Color.hmb.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    <class name="com.alexwestconsulting.hibernateexample.beans.Color" table="colors">
     
    	<id name="id">
    		<generator class="assigned"/>
    	</id>
    	<property name="color"/>
     
    </class>
    </hibernate-mapping>
    et UserColor.hbm.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    <class name="com.alexwestconsulting.hibernateexample.beans.UserColor" table="coloru">
     
    	<id name="user">
    		<generator class="assigned"/>
    	</id>
    	<property name="id_color"/>
     
    </class>
    </hibernate-mapping>
    Merci ^^

  2. #2
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Bonjour,

    Personnellement, je m'embête plus à écrire mes fichiers de mapping à la main. J'utilise en premier lieu Hibernate Tools qui va me créer: fichiers de mapping, beans, fichier de conf et classe de persistance. Après, je les retravaille pour correspondre à mes besoins. Si jamais tu utilises cette solution (qui s'intègre à eclipse), il y a des tutos sur le site ou le net.

  3. #3
    Membre confirmé Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Points : 500
    Points
    500
    Par défaut
    Hello,

    clairement, utilise hibernate tools, ca facilite la vie! Il te génère tous les fichiers hbm et java à partir de la DB!
    Mes logiciels n’ont jamais de bug. Ils développent juste certaines fonctions aléatoires.

  4. #4
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    HibernateTools c'est bien ca aide, c'est pratique.
    Comprendre ce que l'on fait, c'est mieux!

    Il faut déjà que tu sache quel type de relation tu veux faire entre tes tables :
    * n-n,1-n,n-1 ?
    * bi-directionnelles ou uni-directionnelles.

    Ensuite la doc d'hibernate (en francais) est plutôt bien faite sur la question. Malheureusement en maintenance aujourd'hui

    Mais voici par exemple ce que donnerais une relation 1-n.
    Coté 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <set name="elements" >
    			<key column="ELEMENT"/>
        <one-to-many class="Elements" />
    </set>
    Coté n (classe elements):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <many-to-one name='element" class="Groupe"  column="ELEMENT"/>
    J'espere que cela pourra t'aider

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Points : 53
    Points
    53
    Par défaut
    Merci pour vos réponse, c'est très gentil ^^

    Citation Envoyé par ruscov Voir le message
    Hello,

    clairement, utilise hibernate tools, ca facilite la vie! Il te génère tous les fichiers hbm et java à partir de la DB!
    où est ce que je peus trouver un bon tuto de hibernate tool ?!

  6. #6
    Membre confirmé Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Points : 500
    Points
    500
    Par défaut
    Sur le site d'hibernate lol!
    http://www.hibernate.org/hib_docs/to...n/html_single/

    Seul hic, c'est que le site est en maintenance depuis 1 semaine maintenant. Mais heureusement Google est là et si tu tapes hibernate Tools dans Google, tu peux afficher la cache de Google pour voir le site.
    Mes logiciels n’ont jamais de bug. Ils développent juste certaines fonctions aléatoires.

  7. #7
    Membre régulier
    Profil pro
    Sr. Software Engineer
    Inscrit en
    Août 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Software Engineer

    Informations forums :
    Inscription : Août 2007
    Messages : 169
    Points : 118
    Points
    118
    Par défaut utiliser du code générer c'est bien mais le comprendre c'en encore mieux
    Tout est dans le titre de mon post. en fin je n'ai rien contre l'utilisation des outils à "tout faire". cependant pour ceux qui préfère générer les fichiers de mapping via hibernate tools à partir du sql. vous êtes posez la question par exemple d'implémentation d'un éventuelle cas d'héritage? Car il en existe plusierus stratégies d'implémentation à cet effet selon les objectifs visées. Etes sur que celle géérée par hibernate tools vous convient? auriez vou besoin de polymorphisme? bref autant d question que d'après moi je crois que la décision revient au developpeur.

    Voila pour quoi en gégéral je fais mes mapping moi meme et je laisse les outils gégéré le java et le sql.

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par henpower Voir le message
    Tout est dans le titre de mon post. en fin je n'ai rien contre l'utilisation des outils à "tout faire". cependant pour ceux qui préfère générer les fichiers de mapping via hibernate tools à partir du sql. vous êtes posez la question par exemple d'implémentation d'un éventuelle cas d'héritage? Car il en existe plusierus stratégies d'implémentation à cet effet selon les objectifs visées. Etes sur que celle géérée par hibernate tools vous convient? auriez vou besoin de polymorphisme? bref autant d question que d'après moi je crois que la décision revient au developpeur.

    Voila pour quoi en gégéral je fais mes mapping moi meme et je laisse les outils gégéré le java et le sql.
    C'est pas faux, mais rien n'empêche de faire le gros-œuvre avec un outil et de modifier les spécificités à la main...
    Il n'y a pas de bonne et mauvaise pratique, c'est un choix personnel avant tout, mais je trouve pour ma part qu'il n'y a pas de raison à se faire braire à écrire du code qu'un outil pourrait faire tout aussi bien en 3 clicks...

    (c'est un peu comme ceux qui préconisent de coder avec wordpad et compiler avec javac... galère et ça n'apporte rien à la qualité du programme)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Points : 153
    Points
    153
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    (c'est un peu comme ceux qui préconisent de coder avec wordpad et compiler avec javac... galère et ça n'apporte rien à la qualité du programme)
    Non, mais ça aide à la compréhension de java. Une étape obligatoire à mon sens.
    Alors utiliser un outil, oui. Mais avant, il convient d'essayer de le faire seul.

    Car le jour où, comme l'explique henpower, il devra faire quelque chose de spécifique et mettre les mains dans le cambouis, et bien il sera content d'avoir effectué les premières étapes !

    Aux bébés, on leur apprends à marcher avant de leur apprendre à courir, non ?

  10. #10
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Citation Envoyé par DeathMaker Voir le message
    Aux bébés, on leur apprends à marcher avant de leur apprendre à courir, non ?
    Afin de continuer dans les exemples farfelus.
    A un bébé, on lui apprend à marcher, certes; mais on lui montre surtout qu'en prenant appui dans un premier temps sur les éléments de son environnement (table, mur...), il arrivera plus facilement à appréhender l'équilibre nécessaire pour marcher.

    Bref, ce que je veux dire, c'est qu'il faut arrêter les discours idéalistes du genre "faut tout faire à la main, c'est mieux, c'est plus propre, ça permet de comprendre..."; si on a le temps pour ça, c'est bien mais c'est rarement le cas.
    L'intérêt d'hibernate tools n'est pas de tout faire mais bien de poser un squelette pour les fichiers (ou de base de données) utilisable par Hibernate.
    Sinon, Hibernate est un outil extrêmement configurable et suffisament complet(et complexe) pour retravailler à sa guise les fichiers générés après. Ceci n'empèche qu'on a déjà une bonne partie du code pré-écrit sur lequel on a pas besoin de revenir et du coup, on y gagne en temps passé.

    Citation Envoyé par DeathMaker Voir le message
    Alors utiliser un outil, oui. Mais avant, il convient d'essayer de le faire seul.
    Tu utilises tout les jours énormement d'outils et tu n'as pas pour autant essayé de les faire tout seul avant, je vois pas pourquoi ça devrait etre différent forcement pour tout ce qui touche la programmation...

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Points : 153
    Points
    153
    Par défaut
    Citation Envoyé par zorm
    [...]
    Tu utilises tout les jours énormement d'outils et tu n'as pas pour autant essayé de les faire tout seul avant, je vois pas pourquoi ça devrait etre différent forcement pour tout ce qui touche la programmation...
    Certes, mais lorsque je lis ça:
    Citation Envoyé par Monta^^ Voir le message
    sauf que je n'ai pas compris l'utilisation du mot clé "set" dans les fichiers *.hbm.xml ...
    Je vois pas l'intéret de proposer un outil qui va justement lui générer correctement le "set", sans pour autant qu'il comprenne ce qui a été généré !

    Je suis tout à faire d'accord avec toi qu'il ne faut pas réinventer la roue, et se servir d'outil qui nous pré-mâche le travail.
    Cependant, je pense qu'il faut un minimum connaitre ce que cet outil nous pond pour rester maître du code généré.

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par zorm Voir le message
    Afin de continuer dans les exemples farfelus.
    A un bébé, on lui apprend à marcher, certes; mais on lui montre surtout qu'en prenant appui dans un premier temps sur les éléments de son environnement (table, mur...), il arrivera plus facilement à appréhender l'équilibre nécessaire pour marcher.

    Bref, ce que je veux dire, c'est qu'il faut arrêter les discours idéalistes du genre "faut tout faire à la main, c'est mieux, c'est plus propre, ça permet de comprendre..."; si on a le temps pour ça, c'est bien mais c'est rarement le cas.
    L'intérêt d'hibernate tools n'est pas de tout faire mais bien de poser un squelette pour les fichiers (ou de base de données) utilisable par Hibernate.
    Sinon, Hibernate est un outil extrêmement configurable et suffisament complet(et complexe) pour retravailler à sa guise les fichiers générés après. Ceci n'empèche qu'on a déjà une bonne partie du code pré-écrit sur lequel on a pas besoin de revenir et du coup, on y gagne en temps passé.


    Tu utilises tout les jours énormement d'outils et tu n'as pas pour autant essayé de les faire tout seul avant, je vois pas pourquoi ça devrait etre différent forcement pour tout ce qui touche la programmation...
    +1
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par DeathMaker Voir le message
    Certes, mais lorsque je lis ça:


    Je vois pas l'intéret de proposer un outil qui va justement lui générer correctement le "set", sans pour autant qu'il comprenne ce qui a été généré !

    Je suis tout à faire d'accord avec toi qu'il ne faut pas réinventer la roue, et se servir d'outil qui nous pré-mâche le travail.
    Cependant, je pense qu'il faut un minimum connaitre ce que cet outil nous pond pour rester maître du code généré.
    Désolé, mais pour moi, le problème ne vient pas de l'outil...
    Il y a ceux qui cherchent lorsqu'ils rencontrent un problème et les assistés... et que le code original ait été généré par un outil ou par une main ne change rien à l'affaire...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    En fait, chacun fais comme il le souhaite.
    Utiliser des outils ou pas ...

    Il faut juste en assumer les conséquences, car quand quelqu'un demande de l'aide sur une techno particulière et te dis qu'il utilise tel outil et que toi tu connais cette techno mais pas les outils, et bien ... comment dire .... tu ne peux pas vraiment aider cette personne.
    Je sais pas si j'ai été très clair. Mais en gros les outils c'est bien mais faut savoir à quoi ca sert ^^

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par willoi Voir le message
    En fait, chacun fais comme il le souhaite.
    Utiliser des outils ou pas ...

    Il faut juste en assumer les conséquences, car quand quelqu'un demande de l'aide sur une techno particulière et te dis qu'il utilise tel outil et que toi tu connais cette techno mais pas les outils, et bien ... comment dire .... tu ne peux pas vraiment aider cette personne.
    Je sais pas si j'ai été très clair. Mais en gros les outils c'est bien mais faut savoir à quoi ca sert ^^
    Là encore, c'est une question de personne.
    J'utilise les outils de génération de code mais je connais très bien la syntaxe qu'ils génèrent... c'est une question de productivité...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Points : 153
    Points
    153
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Là encore, c'est une question de personne.
    J'utilise les outils de génération de code mais je connais très bien la syntaxe qu'ils génèrent... c'est une question de productivité...
    CQFD

Discussions similaires

  1. comment créer une relation entre 2 table?
    Par giguoin dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/04/2010, 14h31
  2. Réponses: 1
    Dernier message: 11/06/2009, 23h39
  3. Comment créer une contrainte entre deux tables ?
    Par Invité dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/04/2009, 16h53
  4. Supprimer et créer une relation entre deux tables
    Par bassiste dans le forum Administration
    Réponses: 1
    Dernier message: 18/07/2008, 20h20
  5. Réponses: 6
    Dernier message: 23/12/2007, 14h06

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