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 :

Position des annotations JPA


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Par défaut Position des annotations JPA
    Bonjour tout le monde,


    Débutant en JPA, je viens de m’apercevoir qu'il existe deux alternatives pour positionner les annotations; soit sur les champs, soit sur les méthodes get de la classe annotée, et ceci dépend de la position de @Id .

    La première alternative indique que JPA accédera directement aux champs pour lire ou écrire alors qu'avec la deuxième alternative JPA accédera via les méthodes get. Alors, ma question : c'est quoi la différence entre les deux ?
    Est ce qu'avec la première alternative JPA accédera en faisant NomDeClass.Attribut ? Il n’utilisera pas les setters et les getters pour modifier et accéder aux champs ? Si cela est vrai ou est le rapport avec la notion d'objet?

    J'espère que vous avez compris le conflit

    Merci d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour issam_ovic,
    C'est une très bonne question que tu soumets à nos experts là , je vais tenter d'y répondre.
    Citation Envoyé par issam_ovic Voir le message
    Bonjour tout le monde,

    Débutant en JPA, je viens de m’apercevoir qu'il existe deux alternatives pour positionner les annotations; soit sur les champs, soit sur les méthodes get de la classe annotée,
    Exact, tu peux effectivement utiliser ces 2 mécanismes d'annotation.
    Citation Envoyé par issam_ovic Voir le message
    et ceci dépend de la position de @Id .
    Je ne vois pas le rapport avec @Id, cette annotation désigne la clé primaire vue par JPA
    Citation Envoyé par issam_ovic Voir le message
    La première alternative indique que JPA accédera directement aux champs pour lire ou écrire alors qu'avec la deuxième alternative JPA accédera via les méthodes get. Alors, ma question : c'est quoi la différence entre les deux ?
    L'avantage de le mettre sur les getters c'est que pour une classé héritée un attribut peut jouer 2 rôles. Imagines que j'ai une attribut mappé sur un champ (via son getter) et que dans une classe dérivée je veuille donner un autre rôle à cet attribut, et bien il sera possible puisqu'on peut redefnir une méthode dérivée en java.
    Citation Envoyé par issam_ovic Voir le message
    Est ce qu'avec la première alternative JPA accédera en faisant NomDeClass.Attribut ?
    Non pas exactement même si on peut annoter un champ directement, le principe d'accès à champ private que par son accesseur reste inviolable, la preuve, en esperant que tous tes attributs soient "private" bien sur. La preuve de ce que je dis, essayes de ne pas mettre les accesseurs, mappes un champ et testes tu verras, JPA par instropection cherchera ses accesseurs et plantera en te les demandant.
    Citation Envoyé par issam_ovic Voir le message
    Il n’utilisera pas les setters et les getters pour modifier et accéder aux champs ? Si cela est vrai ou est le rapport avec la notion d'objet?
    J'espère que vous avez compris le conflit

    Merci d'avance.
    Bonne problématique, pour conclure j'utilise les 2, mais généralement l'annotation sur l'attribut directement, on se retrouve plus facilement en relisant un code.

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas fait le test en supprimant les getter/setter mais ce que je sais c'est qu'on peut généralement accéder à une propriété "private" par introspection en modifiant le flag d'accessibilité (sur un Field), sauf si un SecurityManager existe et qu'on a interdit cette modification...
    Faudra que je fasse le test...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [web] [PerlTk] Position des fenêtres
    Par Cyspak dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 05/11/2004, 11h49
  2. [CrystalReports 8.5]Graphique 3D : position des étiquettes
    Par caubry dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 01/09/2004, 11h17
  3. DBGrid : enregister la position des colonnes
    Par Harry dans le forum Bases de données
    Réponses: 8
    Dernier message: 21/07/2004, 21h27
  4. Position des balises H2 ou comment les numéroter
    Par haypo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 12/07/2003, 19h24
  5. Changer dynamiquement la position des onglets
    Par ginnovy dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/09/2002, 18h24

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