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 :

2 tables 2 fichiers de mapping 1 classe java


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut 2 tables 2 fichiers de mapping 1 classe java
    Bonjour,

    Je dois traiter deux tables absolument identique (je n'ai pas le choix je ne peux pas les fusionner).

    Je suis obligé de faire deux fichiers de mapping puisque mon attribut "table" change.

    Et j'aimerais les faire pointer tous les deux vers la même classe Java, pour éviter d'écrire exactement le même code. Mais bien ca ne marche pas, hibernate me jette !

    Quelqu'un aurait une astuce pour contourner ce problème ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    Utilisez le polymorphisme. Deux classes java, une pour chaque table, héritent d'une troisième / implémentent une interface que vous utilisez dans le code.

  3. #3
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Tu peux développer un peu ? Si je comprend bien, elles décrivent le même objet (donc mapping identique) mais la base de données les a dispatchés sur deux tables différentes ?!?

    Le polymorphisme implicite pourrait alors etre, en effet, une solution... toutefois, elle présente deux inconvénients :
    1- Il faudra alors créer deux objets fils de ton objet java (même si ces denriers ne seront jamais utilisr dans le code métier)
    2- Le polymorphisme implicite implique certaines restrictions, notamment dans l'utilisation d'un objet mère dans les associations...

  4. #4
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut
    En fait mes deux tables sont parfaitement identiques (relation, identifiant, attributs ...), seuls leurs noms diffèrent. Ce qui m'obligent à créer deux fichiers de mappings un pour chaque table (puisque leur nom change).

    La sémantique des deux tables est différente et il y aurait d'autres facons de les concervoir, beaucoup plus "3FN", mais bon je m'adapte car je peux pas y toucher !

  5. #5
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Citation Envoyé par BizuR
    Tu peux développer un peu ? Si je comprend bien, elles décrivent le même objet (donc mapping identique) mais la base de données les a dispatchés sur deux tables différentes ?!?

    Le polymorphisme implicite pourrait alors etre, en effet, une solution... toutefois, elle présente deux inconvénients :
    1- Il faudra alors créer deux objets fils de ton objet java (même si ces denriers ne seront jamais utilisr dans le code métier)
    2- Le polymorphisme implicite implique certaines restrictions, notamment dans l'utilisation d'un objet mère dans les associations...

    Hello,

    Les deux objets fils représenteront l'implémentation concernant chacune des deux bases, l'acces se fera par l'intermédiaire de l'objet Père (qui pourrait être une classe abstraite ou une interface?

    C'est cela?

    Merci d'avance,

  6. #6
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Oui, c'est ainsi que je le voyais ... avec une stratégie "one table per concrete class", ca pourrait le faire je pense.

    Et on eviterait peut-etre aussi le polymorphisme après tout (plymorphisme = one table per concrete class en ne specifiant pas les champs communs pour la classe mère). Enfin a méditer n'est ce pas

  7. #7
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Tiens Galak, je viens de tomber sur ce paragraphe de la doc Hibernate : http://www.hibernate.org/hib_docs/v3...ing-entityname

    Les entity name permettent de mappé plusieurs fois une même classe ... peut etre est-ce la solution qu'il te faudrait

Discussions similaires

  1. Mon fichier html Vs ma classe Java en GWT
    Par amine_en_france dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 23/04/2013, 19h13
  2. Réponses: 1
    Dernier message: 07/07/2012, 18h38
  3. Réponses: 0
    Dernier message: 18/04/2012, 10h52
  4. Réponses: 4
    Dernier message: 08/10/2010, 12h29
  5. Réponses: 1
    Dernier message: 22/03/2010, 15h40

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