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 :

[session] Meilleures pratiques d'utilisation de session


Sujet :

Hibernate Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [session] Meilleures pratiques d'utilisation de session
    Bonjour,

    Mon application utilise la base de données en Lecture seule. (Pas d'insertion, ni de mise à jour, ni de suppression...)

    J'utilise Hibernate pour accéder à ma base et effectuer les requetes (via mes DAO).

    An niveau de la session, quelle est la meilleure pratique:
    - celle ci est initialisée et ouverte au démarrage de l'application, elle est ensuite réutilisée par tous les dao, et elle n'est jamais fermée
    - ou dois-je réouvrire une session à chaque fois que j'utilise un dao ?

    Si, la meilleure pratique est le premier cas, à quel moment dois-je fermer / rafraichir ma session ?

    merci beaucoup pour votre aide,

    Jean

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Je dirais que la réponse dépend de la fréquence à laquelle ton application a besoin d'accéder à la base de données.

    Si tu dois effectuer toute une série de requêtes à la suite, mieux vaut garder une cession ouverte.

    Si tu as une lecture en base à faire de temps en temps, mieux vaut n'ouvrir la cession que lorsque tu en as besoin.

    Si tu veux garder une cession ouverte, tu devras en plus faire attention aux "timeout". Si tu laisses ta cession inactive, la base de données peut décider unilatéralement de clore ta cession. SI tu n'as pas prévu le cas, tu te retrouveras avec une exception la prochaine fois que tu voudras utiliser ta cession.

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu risques aussi de mettre trop d'objets dans ta session et de la faire exploser.
    Je pense que la session doit avoir une durée de vie courte, correspondant à la durée de vie d'un service.
    Elle doit etre fermée au moment du commit.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 49
    Points
    49
    Par défaut
    alors je venais sur le forum avec exactement la même question...
    donc j'ai changé un peu mon code pour faire en sorte qu'un session ne dure que pour un service...
    par exemple pour une création de menu je ne fais appel a la fonction close() que lorsque je l'ai crée et enregistré dans ma base... mais si je reclique juste derrière sur "Creation Menu" qui a besoin d'un accès a la BD il me met une erreur "session closed"...jpensais qu'une fois qu'elle était ferme il était capable de la rouvrir avec le currentSession?!
    mon HibernateUtil :
    public static Session currentSession()
    throws HibernateException {
    Session s = (Session) session.get();
    // Ouvre une nouvelle Session, si ce Thread n'en a aucune
    if (s == null) {
    s = sessionFactory.openSession();
    session.set(s);
    }
    return s;
    }
    Mercki !!

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/09/2005, 10h21
  2. Réponses: 5
    Dernier message: 22/08/2005, 16h48
  3. Utilisation de [Session] et de [BDD]
    Par Alexr dans le forum JDBC
    Réponses: 1
    Dernier message: 21/06/2005, 14h09
  4. [VB.NET] Utilisation des sessions dans Session_End ?
    Par San Soussy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/02/2005, 16h40
  5. [JSP] Utilisation de session
    Par samios dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 02/11/2004, 11h17

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