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 :

hibernate et interface


Sujet :

Hibernate Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Points : 250
    Points
    250
    Par défaut hibernate et interface
    Bonjour,
    je suis en train de mapper un graphe d'objet avec Hibernate et j'emploie à un moment des interfaces. Voici mon problème :

    J'ai une classe Page qui contient un HasSet d'interface "ElementPage". C'est une relation one-to-many :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Page
    {
        ......
        private HashSet<ElementPage> elementPages = new ....()
    }
     
    interface ElementPage {....}
    J'ai trois classes "Champ", "Bloc" et "Texte" qui implementent l'interface "ElementPage" :
    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
     
    class Champ implements ElementPage 
    {
        .......
        private Page page;
    }
    class Bloc implements ElementPage 
    {
        .......
        private Page page;
    }
    class Texte implements ElementPage 
    {
        .......
        private Page page;
    }
    Mon fichier de mapping pour la classe "Page" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <hibernate-mapping ....>
          <class name="Page" table="t_page" >
                 ..............
                 <set name="elementPages" inverse="true">
                        <key column="PAGE_ID"  />
                        <one-to-many class="ElementPage" />
                 </set>
          </class>
    </hibernate-mapping>
    Mon fichier de mapping pour la classe "Champ" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <hibernate-mapping ....>
          <class name="Champ" table="t_champ" >
                 ..............
                 <many-to-one column="PAGE_ID" name="page" class="Page" />
          </class>
     </hibernate-mapping>
    Mon fichier de mapping pour la classe "Bloc" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <hibernate-mapping ....>
          <class name="Bloc" table="t_bloc" >
                 ..............
                 <many-to-one column="PAGE_ID" name="page" class="Page" />
          </class>
     </hibernate-mapping>
    Mon fichier de mapping pour la classe "Texte" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <hibernate-mapping ....>
          <class name="Texte" table="t_texte" >
                 ..............
                 <many-to-one column="PAGE_ID" name="page" class="Page" />
          </class>
     </hibernate-mapping>
    Mon problème est de savoir si cette configuration va passer, si le fait de déclarer un HashSet d'interface avec cette interface pouvant être implémentée par trois classes différentes qui vont être mappées à trois tables respectivement va passer, si au niveau du fichier de mapping tout se passe comme si j'avais des relations entre classes directement, plutôt que passer par l'intermédiaire d'interface.

    Merci d'avance pour vos réponses.

    Xavier

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Points : 83
    Points
    83
    Par défaut
    de prime abord cela devrait passer...
    Par contre ca, c'est pas bon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Page
    {
        ......
        private HashSet<ElementPage> elementPages = new ....()
    }
    une bonne pratique JAVA (meme pas hibernate) veut que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Page
    {
        ......
        private Set<ElementPage> elementPages = new ....()
    }

    Citation Envoyé par flamant Voir le message
    Bonjour,
    je suis en train de mapper un graphe d'objet avec Hibernate et j'emploie à un moment des interfaces. Voici mon problème :

    J'ai une classe Page qui contient un HasSet d'interface "ElementPage". C'est une relation one-to-many :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Page
    {
        ......
        private HashSet<ElementPage> elementPages = new ....()
    }
     
    interface ElementPage {....}
    J'ai trois classes "Champ", "Bloc" et "Texte" qui implementent l'interface "ElementPage" :
    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
     
    class Champ implements ElementPage 
    {
        .......
        private Page page;
    }
    class Bloc implements ElementPage 
    {
        .......
        private Page page;
    }
    class Texte implements ElementPage 
    {
        .......
        private Page page;
    }
    Mon fichier de mapping pour la classe "Page" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <hibernate-mapping ....>
          <class name="Page" table="t_page" >
                 ..............
                 <set name="elementPages" inverse="true">
                        <key column="PAGE_ID"  />
                        <one-to-many class="ElementPage" />
                 </set>
          </class>
    </hibernate-mapping>
    Mon fichier de mapping pour la classe "Champ" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <hibernate-mapping ....>
          <class name="Champ" table="t_champ" >
                 ..............
                 <many-to-one column="PAGE_ID" name="page" class="Page" />
          </class>
     </hibernate-mapping>
    Mon fichier de mapping pour la classe "Bloc" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <hibernate-mapping ....>
          <class name="Bloc" table="t_bloc" >
                 ..............
                 <many-to-one column="PAGE_ID" name="page" class="Page" />
          </class>
     </hibernate-mapping>
    Mon fichier de mapping pour la classe "Texte" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <hibernate-mapping ....>
          <class name="Texte" table="t_texte" >
                 ..............
                 <many-to-one column="PAGE_ID" name="page" class="Page" />
          </class>
     </hibernate-mapping>
    Mon problème est de savoir si cette configuration va passer, si le fait de déclarer un HashSet d'interface avec cette interface pouvant être implémentée par trois classes différentes qui vont être mappées à trois tables respectivement va passer, si au niveau du fichier de mapping tout se passe comme si j'avais des relations entre classes directement, plutôt que passer par l'intermédiaire d'interface.

    Merci d'avance pour vos réponses.

    Xavier

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Points : 250
    Points
    250
    Par défaut
    Merci Denisjava pour ta réponse

Discussions similaires

  1. mapping RMI avec Hibernate (pb avec interfaces)
    Par jelau dans le forum Hibernate
    Réponses: 0
    Dernier message: 14/05/2011, 19h53
  2. [hibernate] mapping avec interface
    Par plsavary dans le forum Hibernate
    Réponses: 3
    Dernier message: 05/09/2008, 09h51
  3. Interfacer Struts + Hibernate
    Par Bateau_Ivre dans le forum Struts 1
    Réponses: 8
    Dernier message: 05/06/2008, 13h28
  4. HIBERNATE et interface
    Par flamant dans le forum Hibernate
    Réponses: 5
    Dernier message: 14/02/2008, 17h34
  5. Réponses: 6
    Dernier message: 24/08/2006, 14h33

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