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 :

Intérêt d'une entité embarquée ?


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 179
    Par défaut Intérêt d'une entité embarquée ?
    Bonjour,

    dans le livre Java que je suis en train de lire comme sur beaucoup d'exemples sur le net également, je remarque souvent l'utilisation d'une entité embarquée (avec @Embeddable et @Embedded). L'exemple type est celui d'une personne embarquant une entité adresse et formant donc une table unique personne en bdd.

    Un exemple ici

    L'intérêt est apparemment de pouvoir utiliser l'entité adresse dans une autre classe. Mais dans quel cas cela peut il arriver ? Et pourquoi ne pas directement récupérer l'entité personne et via les accesseurs accéder à son adresse ?

    Je n'arrive pas à comprendre l'intérêt des entités embarquées

    Quelqu'un peut il m'expliquer ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 130
    Par défaut
    L'interet, c'est que tu travailles sur de la persistance de données.

    Les classes annotées par @Entity ont donc pour finalité d'être persistées en base de données.
    Tous les membres de cette classes deviennent donc des champs possibles en base. JPA gère tous les types par défaut (int, boolean, String, ...) pour créer les champs.

    Or si tu lui spécifier comme membre un Classe à toi, JPA ne sais pas comment créer ce champ.
    Il incombe au développeur de faire un choix, comment stocker cette donnée :

    Prenons le cas de l'entité Personne qui contient un membre Adresse :
    Choix 1 : Adresse est annoté par l’annotation @Entity, chaque entité aura sa propre table en base soit 2. Donc pour avoir accès à l'Adresse d'une personne, il faudrait faire une relation entre les 2 tables (entités) : @ManyToMany, @OneToMany, ...
    Choix 2 : Adresse est annoté par l’annotation @Embeddable, seul l'entité Personne sera persisté en base. En précisant l'annotation @Embedded sur le membre Adresse de la classe Personne, ont dit à JPA : "intègre les champs de cette entité (Adresse) à l'intérieur de l'entité en cours (Personne)".
    Avec @Embeddable tu n'as donc qu'une seule table en base qui contient les champs des 2 classes.

    Cela permet d'améliorer le modèle objet sans pour autant modifier le comportement en base...

Discussions similaires

  1. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 10h28
  2. une entité dépend d'elle même
    Par Danger dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 23/05/2005, 17h34
  3. mettre une entité date ou pas??
    Par faayy dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 12/04/2005, 10h00
  4. mettre une entité date ou pas et surtout comment!!!
    Par faayy dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/04/2005, 09h54
  5. [MCD]Faut-il une Entité Date ?
    Par Francis dans le forum Schéma
    Réponses: 2
    Dernier message: 17/01/2005, 19h48

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