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 d'une table de lien vers plusieurs objets


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2012
    Messages : 15
    Par défaut Mapping d'une table de lien vers plusieurs objets
    Bonjour à tous,

    Je suis en train de développer une appli et je suis confronté à un problème avec Hibernate. Je m'explique.

    En gros j'ai une table de lien entre des objets (ou tables si on parle en terme de base) et un autre objet.

    Je vais essayer de simplifier le pb pour que ça soit plus clair.

    On va dire que j'ai un objet A et un objet B et que ces 2 objets peuvent posséder un ou plusieurs objets C.
    Pour cela j'ai une table de lien en base avec 2 colonnes id_objet (qui peut être un id de A ou un id de B) et id_objetC.
    Y'a même d'autres colonnes mais on va garder que celles ci pour l'exemple.
    Je ne vois pas bien comment mapper ça dans Hibernate.

    Est-ce qu'il faut que j'ai un Set d'objets C dans mes classes A et B ?
    Ou alors est-ce qu'il faut que j'ai une table (appelons la D) au dessus de A et B avec une simple colonne Id et avec A et B qui hériteraient de cette table.
    Dans ce cas là j'aurais un seul Set d'objets dans la classe D.

    Je viens de me relire c'est pas clair du tout, j'espère que quelqu'un aura saisi mon problème.

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    les ids A et B sont tous différents ? autrement dit, il n'existe aucun id A ou B qu'on puisse retrouver dans l'autre ?

    si oui, alors l'option de créer une classe D qui gère les ids et qui possède un set de C, et avoir A et B étendre cette classe me semble une bonne idée (c'est du moins celle que j'avais choisie quand j'ai été confronté à ce problème )

    en revanche si tu ne peux garantir l'unicité des ids, il te faudra créer un set par objet A ou B, et probablement ajouter la table d'origine en colonne dans ta table de mappings (à moins que tu n'aies déjà une colonne pour différencier A et B )

  3. #3
    Membre éclairé Avatar de Jacobian
    Inscrit en
    Février 2008
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 425
    Par défaut
    si j'ai bien compris ton problème:
    le plus simple est d'avoir 3 tables:

    A----C-----B
    ==========Class A========
    A{
    oneToMany
    C
    }
    ==========Class B========
    B{
    oneToMany
    C
    }
    ==========Class C========
    C{

    ManyToOne
    A

    ManyToOne
    B

    }


    et voila

  4. #4
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2012
    Messages : 15
    Par défaut
    Merci les gars pour vos réponses.

    Du coup j'ai une question plus générale :
    Dans mon application il peut arriver dans un certains temps qu'il y ait d'autres objets que A et B dans ma table.
    J'aimerai configurer ça dans un fichiers properties. Dans un premier temps il y aurait que A et B.
    Si dans quelques temps on veut qu'un objet E ait aussi un objet C dans mon appli, est-ce qu'il est possible que simplement en le rajoutant en plus de A et B dans mon fichier properties ça soit pris en compte ?
    Bon je sais ça a l'air chaud à faire, je sais même pas si c'est possible.

    Je suis en train de me dire que j'abuse un peu là, je fais du hibernate depuis 2 semaines et je veux de suite faire des trucs de fous

    En tout cas merci Jacobian et Gardyen pour vos réponses

  5. #5
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    qu'est-ce que tu veux dire par
    en le rajoutant en plus de A et B dans mon fichier properties ça soit pris en compte
    ?

    si tu dois ajouter d'autres objets à ce schéma, je te conseille d'utiliser l'héritage aussi, tu as juste à créer ta class E extends D, pas d'autres modifications à faire

  6. #6
    Membre averti
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2012
    Messages : 15
    Par défaut
    C'est vrai que ce que je veux faire n'est pas très clairement expliqué.
    Surtout si je prends comme exemple A, B, C, etc.

    Je vais essayer d'expliquer avec des exemples précis.

    Dans notre appli on a décidé de laisser la possibilité de décrire nos objets ("Utilisateur", "Document", "Sociéte", etc) par des informations dynamiques.
    C'est-à-dire ne pas avoir une liste fixe de champs à remplir pour décrire chacun des objets.
    On aura un administrateur qui décidera de rajouter des infos à remplir.
    Pour ça on a mon objet C dan lequel est décrit l'info à remplir.
    Et pour l'instant on a uniquement sur un "Utilisateur" et un "Document" qu'on a ce genre d'infos dynamiques (objets A et B de mon exemple).
    L'admin rajoutera des infos via une fenête d'admin en choisissant d'abord son objet sur lequel l'info apparaîtra.

    Si un jour on décide d'avoir la possibilité d'avoir une info dynamique sur une "Société" par exemple, je voulais juste avoir à rajouter l'objet dans un fichier properties (où il y aurait déjà "Utilisateur" et "Document") pour que ça soit pris en compte automatiquement.
    Mais je sais pas si c'est jouable de faire ça.

    Voilà, est-ce que c'est un peu plus clair ?

  7. #7
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    modifier une classe à chaud en java

    maintenant tu peux très bien anticiper ce genre de problématique

    imaginons par exemple que toutes tes classes objets dérivent de la classe D (comme Dynamique ), mais que seules celles présentes dans ton fichier properties - ou dans tout autre moyen possible de stocker cette info - sont modifiables via l'interface, ça revient à ce que tu veux faire ?

Discussions similaires

  1. [MySQL] Question simple: afficher tous les entrées d'une table en liens
    Par anarchoi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/04/2007, 12h04
  2. Réponses: 1
    Dernier message: 29/04/2007, 19h53
  3. [MySQL] Récupérer une table et redirection vers une page
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 20/03/2007, 16h44
  4. [vb.net] transfert d'une table SQL-Servr vers un fichier texte
    Par nkonito dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/05/2006, 04h36
  5. selection sur une table en fonction de plusieurs ligne
    Par dimdidi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/12/2004, 08h42

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