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 :

[Hibernate] Session & Objets persistants


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Points : 64
    Points
    64
    Par défaut [Hibernate] Session & Objets persistants
    Bonjour,

    J'ai beaucoup de mal à comprendre le fonctionnement d'Hibernate concernant la perisistance d'objets.
    Lors de mon mapping, j'utilise pour tous mes objets du lazy="false". J'imagine donc que dans une même session mes objets sont persistants.

    Imaginons que j'execute une première requete qui me retourne une instance d'objet : instance1. Si j'execute à nouveau cette meme requete et qu'elle me retourne instance2, si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    instance1.equals(instance2);
    cela devrait me renvoyer "true" non ? Parce que là ce n'est pas le cas et je ne comprend pas pourquoi.

    Merci pour votre aide.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 239
    Points : 239
    Points
    239
    Par défaut
    Salut,

    attention égalité veut dire pour java égalité au niveau de la référence. Si tu exécutes ta requete SQL, Hibernate va te retourner un objet X de ta classe MaClasse. Cet objet X aura une référence unique.

    Tu exécutes une seconde fois, Hibernate va instancier une nouvelle ta classe pour créer un nouvel objet Y et donc ce dernier aura une autre référence.

    C'est pourquoi lorsque tu fais X.equals(Y) donne false.

    Si tu veux effectuer une comparaison entre les attributs d'une instance de classe il faut redéfinir la méthode equals(), ainsi que hash(). Pour celà il faut consulter la FAQ de Java. Il me semble que ce point particulier est bien expliqué.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Points : 64
    Points
    64
    Par défaut
    Oui, ca j'ai bien compris pourquoi mon equals() ne fonctionne pas. Il est evident aue Hibernate me crée une nouvelle instance de mon objet. Mais ma question est : pourquoi ?
    Puisqu'il existe une persistance, mes instances d'objets devraient être les mêmes. Ce que j'aimerai c'est justement éviter qu'Hibernate réinstancie mes objets lorsque je les demande. Est-ce possible ?

  4. #4
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Points : 737
    Points
    737
    Par défaut
    Hello,

    As tu mis en place le cache d'hibernate. Ce serait le rôle de celui-ci de ne pas réinitialiser un objet ayant déjà été charger.

    Mais attention, dans le cas d'une modification de ton objet entre deux chargement, je croit bien qu'hibernate re-synchronise les objets avec la base de données donc il y a de forte chance pour qu'il te ré-instancie ton objet.

    Sinon, pour utiliser le cache :
    - Définir un cache provider dans hibernate.cfg.xml (ou hibernate.properties)
    - Ecrire la configuration de cache pour chaque classe mappé

Discussions similaires

  1. hibernate : probleme suppression objet et session
    Par christools7 dans le forum Hibernate
    Réponses: 5
    Dernier message: 31/08/2007, 18h04
  2. [hibernate] Collection d'objet persistent
    Par nesbla dans le forum Hibernate
    Réponses: 10
    Dernier message: 28/04/2006, 16h56
  3. [HIBERNATE] Chargement d'objet incorrect
    Par faya972 dans le forum Hibernate
    Réponses: 4
    Dernier message: 19/04/2006, 23h01
  4. [Sessions] Session + Serialize + Objets?
    Par Chiwawa dans le forum Langage
    Réponses: 2
    Dernier message: 28/09/2005, 20h32
  5. [Info]Créer un objet persistent
    Par seb55555 dans le forum JDBC
    Réponses: 5
    Dernier message: 22/02/2005, 16h53

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