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][Struts] Fermeture des session hibernate


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Avatar de osopardo
    Inscrit en
    Juillet 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2005
    Messages : 92
    Points : 105
    Points
    105
    Par défaut [Hibernate][Struts] Fermeture des session hibernate
    J'ai une datasource crée avec Tomcat et des mapping Hibernate utilisé par une classe action, tout fonctionne parfaitement lors du premier appel de ma classe ( page test.do ), la console d'Eclipse me montre bien l'initialisation des composants Hibernate, mais au deuxieme appel de cette page (ou une autre utilisant hibernate ), aucun composant Hibernate n'est chargé et je récupère l'erreur : "net.sf.hibernate.HibernateException: Session is closed", j'ai donc supprimer la fermeture de session "sessionHibernate.close();" dans ma classe action et là effectivement tout se passe bien mais je pense que ce n'est qu'une solution détourné, la session devant bien être fermé a un moment ou un autre, non ?

    ( Ma session est initialisé par "sessionHibernate = HibernateUtil.currentSession();" )

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    Bonjour,

    ce qui m'etonne c'est que tu puisse avoir une exception de type "Session is closed" en utilisant la classe utilitaire HibernateUtil (methode currentSession()) car celle ci ouvre une nouvelle session si la session courante est fermée.

    Celà dit la gestion des sessions dépends de tes besoins.

    A -
    Si tu partage la même session entre plusieurs utilisateurs/transactions tu n'as pas besoin de fermer ta session systématiquement.
    C'est même deconseillé si tu utilise les chargements tardifs.

    Donc
    1 -Tu ne ferme jamais ta session car elle est partagée par tous les utilisateurs (sauf en cas d'erreur)
    2 -Elle est propre à un utilisateur, alors tu ferme la session lorsque celui ci se deconnecte.

    B - Sinon tu ferme ta session des que tu n'en n'a plus besoin.

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2002
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 186
    Points : 130
    Points
    130
    Par défaut
    salut

    c surement le classique probleme du lazy loading:
    les collections (list, bag, map, ...) et many-to-one ne sont pas chargé en mémoire jvm si tu les declare avec lazy=true
    or dasn ton action tu dois utilisé des propriété d'un objet détaché (session fermée) qui n'ont pas encore été chargée.

    plusieur solution,
    * la plus simple c le sessionInView implémenté par un filtre qui ouvre et ferme ta session pour chaque requete (tu dois qd meme flusher apres chaque methode), mais c pas la plus propre car tu t'exposes a des acces à la base ton prevu
    * mettre lazy=false sur les propriétés dont tu a besoin
    * le + propre: faire monter les propriété dont tu auras besoin apres la fermeture de session

    pour finir, la derniere session utilise souvent le pattern dto ou vo qui permet de faire remonter dans les couches superieurs (vue par ex.) un objet non-métier mais initilaisée avec toute les propriétés voulus

Discussions similaires

  1. @Transactional et gestion des sessions hibernate
    Par verbose dans le forum Spring
    Réponses: 7
    Dernier message: 20/10/2013, 17h03
  2. [Spring & Hibernate] Gestion des sessions Hibernate
    Par Fennec. dans le forum Hibernate
    Réponses: 5
    Dernier message: 26/08/2010, 16h42
  3. Hibernate/Spring : gestion des sessions
    Par herve91 dans le forum Hibernate
    Réponses: 5
    Dernier message: 13/05/2010, 11h15
  4. Gestion des sessions Hibernate
    Par schumi2k2 dans le forum Hibernate
    Réponses: 5
    Dernier message: 31/03/2009, 17h44
  5. Lazy loading et fermeture de session hibernate
    Par BRAUKRIS dans le forum Hibernate
    Réponses: 3
    Dernier message: 20/07/2006, 13h08

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