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 :

[Mapping] Structure d'une relation


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    février 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : février 2004
    Messages : 51
    Points : 35
    Points
    35
    Par défaut [Mapping] Structure d'une relation
    Bonjour,

    Concernant la persistance des objets et le mapping O/R, je me pose la question suivante sur la structure des classes à mapper :

    Si j'ai à gérer un ensemble de clients et de contacts client est -il préférable de définir mes classes comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Client{
       private String numeroClient;
       private String nomClient;
       private Collection contacts;
       ...
    }
     
    public class Contact{
       private String numeroContact;
       private String nomContact;
       ...
    }
    ou plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Client{
       private String numeroClient;
       private String nomClient;
       private String numeroContact;
       ...
    }
     
    public class Contact{
       private String numeroContact;
       private String nomContact;
       private String numeroClient;
       ...
    }
    Tout ça, sachant que j'aurais à gérer par la suite des devis pour lesquels il faudra préciser un client et un contact donné. La seconde hypothèse me semble pas très orientée objet.... et j'apprécierais votre avis !

  2. #2
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : mars 2003
    Messages : 579
    Points : 1 386
    Points
    1 386
    Par défaut
    tout depends de ton modele relationnel et des relations entres tes entites ??

    N-N ou 1-N?

    Si un contact peut appartenir a plusieurs clients et un clients peut avoir plusieurs contacts, c du N-N et dans ce cas le mieux (3eme forme normale) c'est de definir une table qui stockeras tous les couples contact-client par clés primaires, donc trois tables


    @+

  3. #3
    Nouveau membre du Club
    Inscrit en
    février 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : février 2004
    Messages : 51
    Points : 35
    Points
    35
    Par défaut
    1-N : 1 client, plusieurs contacts

  4. #4
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : mars 2003
    Messages : 579
    Points : 1 386
    Points
    1 386
    Par défaut
    dans ce cas la premiere forme convient, du point de vue d'hibernate.

    tu vas utiliser les "components" pour liers tes instances de contact a une instance de client.
    Cependant tu as besoins d'un element commun, comme un id par exemple. Donc tu peux faire un mix des deux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Client{ 
       private String numeroClient; 
       private String nomClient; 
       private Collection contacts; 
       ... 
    } 
     
    public class Contact{ 
       private String numeroContact; 
       private String nomContact; 
       private String numeroClient; 
       ... 
    }
    Au niveau de ta base par contre tu dois avoir deux tables:
    CLient:
    numeroClient
    nomClient

    Contacts:
    numeroContact (clé primaire)
    nomContact
    numeroClient (comme clé foreign)


    Ton component va jointer sur numeroCLient ds les deux tables.

    @+

  5. #5
    Nouveau membre du Club
    Inscrit en
    février 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : février 2004
    Messages : 51
    Points : 35
    Points
    35
    Par défaut
    Par contre je viens de penser que j'avais vu que Poseidon (UML) proposait une classe n'utilisant pas une Collection mais un TreeSet. Quel intérêt ?

    En fait, j'aimerais avoir l'approche la plus propre possible, c'est à dire la plus objet possible, et eviter d'avoir des classes inspirées d'une philosophie relationnelle... et c'est bien pour ça que j'ai besoin de votre avis !

  6. #6
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : mars 2003
    Messages : 579
    Points : 1 386
    Points
    1 386
    Par défaut
    C'est une liste triée (TreeXXX) et sans Doublons (Set).

    Tu generes ton code et tu remplaces avec ce que tu veux.

    @+

  7. #7
    Nouveau membre du Club
    Inscrit en
    février 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : février 2004
    Messages : 51
    Points : 35
    Points
    35
    Par défaut
    OK, grand merci !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/07/2012, 17h29
  2. Pb de mapping sur une relation bidirectionnelle
    Par trekgirl dans le forum Doctrine2
    Réponses: 2
    Dernier message: 01/02/2012, 08h50
  3. Réponses: 8
    Dernier message: 30/07/2009, 14h19
  4. [JDO] Annotations pour intégrer une relation 1-N par map dans sa join table
    Par Blustuff dans le forum Persistance des données
    Réponses: 0
    Dernier message: 31/01/2009, 14h33
  5. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 16h32

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