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

JPA Java Discussion :

Explications classe persistence et héritage


Sujet :

JPA Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut Explications classe persistence et héritage
    Bonjour,

    Imaginons j'ai une Clients (définit comme entity bean) qui hérite de la classe PersonneMorale (définit aussi comme Entity Bean).
    Considérons, une base de donnée où les informations du clients et de la personne morale sont dans une meme table.
    La question est:

    Dois je mettre les attributs embedded sur la classe mèreet embeddable sur la classe fille?

    Dois je modifier ma base pour créer deux tables?

    Autre question:

    Considérons que j'ai une classe Personne et une classe adresse Egalement une classe PersonnePhysique héritant de Personne. Il y a une association avec comme cardinalité 1 entre Personne et adresse.
    Dois je crée une table adresse et une classe Personnne dans ma bdd?
    Ou pareil je dois regrouper les infos de adresse et de personne dans une table avec les informations de PersonnePhysique?

    Merci pour votre aide.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par skyangel Voir le message
    Dois je mettre les attributs embedded sur la classe mèreet embeddable sur la classe fille?
    non.
    Dois je modifier ma base pour créer deux tables?
    non ce n'est pas une obligation.
    Il faut juste mention comme strategie d'héritage :
    InheritanceType.SINGLE_TABLE
    Considérons que j'ai une classe Personne et une classe adresse Egalement une classe PersonnePhysique héritant de Personne. Il y a une association avec comme cardinalité 1 entre Personne et adresse.
    Dois je crée une table adresse et une classe Personnne dans ma bdd?
    Ou pareil je dois regrouper les infos de adresse et de personne dans une table avec les informations de PersonnePhysique?
    Comme tu veux mais si l'adresse n'est pas obligatoire pour une personne il est vivement conseillé de faire une classe (donc une table) Adresse à part

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    OK pour la strategie. Où dois je la mentionner?

    Autre question, l annotation @MappedSuperclass ne doit elle pas jouer un role aussi?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    Je reviens sur mon probleme

    J'ai une classe avec ci-dessous l'arbre de l'héritage

    Personne -----PersonnePhysique------Interlocuteurs
    Personne -----PersonnePhysique-------Utilisateurs



    J'aimerai avoir dans ma bdd deux tables interlocuteurs et utilisateurs.
    Cpendant je n'y arrives pas. J'essai de placer @inheritance sur les classes mais après plusieurs essais je ne vois pas où.

    Pourriez vous me dire ou dois je placer @inheritance ? sur quels classes?

    Merci d'avance.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Points : 191
    Points
    191
    Par défaut
    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
    17
    18
    19
    20
    21
    22
    23
    24
    @Entity
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING)
    @DiscriminatorValue("PP")
    class PersonnePhysique extends Personne {
     
    }
     
     
    @Entity
    @DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING)
    @DiscriminatorValue("I")
    @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    class Interlocuteurs extends PersonnePhysique {
     
    }
     
    @Entity
    @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    @DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING)
    @DiscriminatorValue("U")
    class Utilisateurs extends PersonnePhysique {
     
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    Merci d'avoir répondu.

    La solution ne correspond pas à ce que j'attends.

    J'ai plutôt utilisé l'annotation @MappedSuperclass sur les classes mères .
    La j'obtiens bien une table utilisateurs et une table interlocuteurs en reprenant les champs de la classe mère.

    Merci

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Points : 191
    Points
    191
    Par défaut
    Ok.
    Tu n'avais pas précisé que Personne et PersonnePhysique n'étais pas des Entity.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    ok merci

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

Discussions similaires

  1. Comment hériter de deux classes ? (que signifie héritage multiple ?)
    Par adil_vpb dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 23/10/2007, 19h27
  2. Réponses: 17
    Dernier message: 27/08/2007, 18h35
  3. Foncteur, classes templates et héritage
    Par Floréal dans le forum C++
    Réponses: 8
    Dernier message: 17/06/2007, 21h56
  4. Demande explications classes interfaces
    Par schnito dans le forum Langage
    Réponses: 17
    Dernier message: 10/10/2006, 04h44
  5. [Language] Explications classe définie dans une classe
    Par etiennegaloup dans le forum Langage
    Réponses: 6
    Dernier message: 13/09/2005, 22h15

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