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 :

Lazy loading et fermeture de session hibernate


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Points : 116
    Points
    116
    Par défaut Lazy loading et fermeture de session hibernate
    Bonjour,

    Un chose m'échappe sur Hibernate, quand je charge un objet (ex: une personne) et que je ne souhaite pas, pour des raisons de performance, charger ces dépendances ( ex: posséde une liste de voitures), j'utilise le lazy loading.

    Mais la ou je ne comprend plus, c'est qu'une fois le chargement de l'objet réalisé, la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.getTransaction().commit();
    ferme la transaction et la connexion est l'objet ne peut donc plus être récupéré.

    Est-il possible de m'expliquer comment faire, merci.
    Petit à petit, l'oiseau fait son nid !

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 143
    Points
    143
    Par défaut
    Tant que tu n'as pas fée un session.close(), ta connexion est toujours ouverte, et ton objet toujours manipulable.

  3. #3
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Si tu veux manipulé l'objet en dehorts de transactions ou sessions, tu dois le détacher de son contexte avec un petit session.detach(Object obj).

    Cependant, en dehors d'une transaction, tu dois normalement pouvoir manipuler les objets si la session est toujours ouverte... un peu plus de code serait des plus intéressant pour pouvoir t'aider.

    Enfin en ce qui concerne le détachement d'objet et le lazyLoading, faire attention car tu ne PEUX pas accéder aux champs non chargés d'un objet. Il faut pour cela, rouvrir une session, une transaction puis rattacher l'objet au contexte en cours (contexte=session) pour ensuite pouvoir retrouver les éléments non chargés... chose logique puisque sans session il ne peut du coup pas charger d'objet jusqu'alors inexistant en dehors de la base
    See you, space cowboy... and if you're satisfied, click on

  4. #4
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Points : 116
    Points
    116
    Par défaut
    Ok merci pour vos réponses.
    Petit à petit, l'oiseau fait son nid !

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

Discussions similaires

  1. Spring hibernate lazy loading
    Par mauroyb0 dans le forum Hibernate
    Réponses: 6
    Dernier message: 09/05/2007, 12h14
  2. Réponses: 6
    Dernier message: 10/07/2006, 11h55
  3. [hibernate] problème pour desactiver le lazy loading
    Par agougeon dans le forum Hibernate
    Réponses: 2
    Dernier message: 14/03/2006, 11h20
  4. [HIBERNATE 3]Lazy loading
    Par SEMPERE Benjamin dans le forum Hibernate
    Réponses: 11
    Dernier message: 08/02/2006, 22h40
  5. [Hibernate][Struts] Fermeture des session hibernate
    Par osopardo dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/08/2005, 17h30

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