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 :

Initialisation des Entités JPA


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 94
    Par défaut Initialisation des Entités JPA
    Bonjour, je me pose une question sur les entités JPA, j'utilise aussi les annotations d'hibernate 3.

    Pour expliqué mon problème je prends un exemple simple:

    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
    25
    26
    27
     
    @AccessType("field")
    @Entity
    public class Bidon {
     
      @Id
      private Long Id;
     
      @Lob
      private String descripteur; 
     
      @Transient
      private DescriptorAccessor accessor; 
     
      protected Bidon() {
        // Mon problème est ici
        this.accessor = new DescriptorAccessor(descriptor); 
      }
     
      public Bidon(String descriptor) {
        this.descriptor = descriptor; 
        this.accessor = new DescriptorAccessor(descriptor);
      }
     
      ...
      ...
    }
    La question que je me pose est: est-il bien de mettre du code dans le constructeur par défaut d'une entité JPA ?

    Dans mon cas j'ai un descripteur XML, j'y accède via une classe utilitaire qui doit être instanciée à la construction de l'entité.

    Comment faire ceci ? Dans le constructeur ? Autrement ?

    Merci.

  2. #2
    Membre expérimenté Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Par défaut
    Dans ce cas c'est dangereux car tu utilises un champ (descripteur) qui n'est pas initialisé. Tu auras donc toujours null dans ce champ dans le cas de l'utilisation du constructeur par défaut.
    Pas de bol, c'est ce constructeur qui est utilisé par JPA lors du load.
    Pour contourner cette difficulté, tu peux utiliser l'annotation de callback:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @PostLoad
    private void createDescriptorAccessor() {
            this.accessor = new DescriptorAccessor(descriptor);
    }
    Cette méthode est appelée après le chargement de l'objet, donc tu es sûr que le LOB est déjà récupéré de ta base de données.

    PS : Pour la visibilité de la méthode, je ne sais pas si private est suffisant. A tester.

  3. #3
    Membre confirmé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 94
    Par défaut
    Merci .

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

Discussions similaires

  1. Initialisation propriétés entités JPA
    Par kokumbo dans le forum JPA
    Réponses: 8
    Dernier message: 08/06/2014, 13h50
  2. netbeans: génération de la bd après création des entités jpa
    Par lamabalo dans le forum Persistance des données
    Réponses: 0
    Dernier message: 07/10/2008, 21h55
  3. où insérer le code des entités jpa
    Par cool dans le forum JPA
    Réponses: 4
    Dernier message: 24/04/2008, 18h25
  4. initialisation des property page
    Par Robleplongeur dans le forum MFC
    Réponses: 3
    Dernier message: 21/04/2004, 11h47
  5. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 15h14

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