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 :

Gestion des sessions ?


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Par défaut Gestion des sessions ?
    Bonjour,

    Lorsque je charge des données dans mes tables après avoir démarrer mon serveur applicatif, et après avoir charger les données une première fois, si j'essaie de les recharger à nouveau, Hibernate prends parfois ou ne prends pas compte des nouvelles données (apparemment c'est aléatoire), je dois faire un stop/start de mon serveur.

    J'ai essayé, lorsque je récupère un objet, de faire session.refresh(objet). Ca fonctionne bien, mais je ne peux pas l'utiliser ainsi lorsque j'utilise un Query qui me renvoie une collection, dont certains éléments sont manquants (car venant d'être rajouté en table).

    Je suppose que c'est un problème de cache, et après recherche j'avoue que je suis perdu sur la façon de procédé pour que ces données soient prises en compte dès qu'elles ont été rajoutées en table.

    Je précise que les données rajoutées en table le sont via la même application (et donc via Hibernate également) qui lit ces données.

    Merci pour toute aide, et n'hésitez pas à me demander plus de détails

  2. #2
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Par défaut
    Rebonjour,

    Je parviens à avoir les données bien à jour via un session.clear(). De là, j'ai une autre question.

    Dans le cadre d'une application web multi-utilisateurs, j'aimerais avoir des avis concernant une gestion efficace des sessions Hibernate.

    - Faut-il avoir une seule session pour tous ? Dans ce cas, si chez un session.clear() arrive chez un utilisateur, quel impact pour les autres qui peuvent être en plein milieu d'un traitement ?

    - Faut-il en avoir une pool ? Si oui, quelle proportion par rapport au nombre d'utilisateurs ?

    - Faut-il en prévoir une par utilisateur ? Dans ce dernier cas, comment implémenter une bonne solution ?

    Merci d'avance pour vos réponses !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2007
    Messages : 71
    Par défaut
    Bonjour Thomzon,

    le session.clear() que tu effectues ne porte normalement que sur le cache de niveau 1 de la session courante. C'est à dire que l'ensemble des autres sessions n'est pas affecté par ce clear.

    Je pense qu'il serait plus judicieux pour toi de faire un session.flush() qui met à jour les données de la session par rapport à la base (pas d'objet à préciser, il les fait tous), contrairement à clear() qui vide la session et oblige Hibernate à tout recharger (si j'ai bien tout compris, parce que j'ai tout lu Freud).

    Je ne sais s'il est possible d'impacter l'ensemble des sessions de ton application. Je sais néanmoins que tu peux travailler sur le cache de niveau 2, qui lui touche toutes les sessions. Mais est-ce vraiment ce que tu veux faire...

    MiniMarch

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Par défaut
    Merci pour la réponse,

    J'ai essayé le flush(), mais j'avais toujours le même soucis.

    Concernant la gestion de session, un conseil à me donner ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2007
    Messages : 71
    Par défaut
    Concernant la gestion des sessions, je dois avouer que je vais être un peu plus limité au niveau des conseils. Je viens de m'attaquer au problème, et je ne maîtrise encore qu'assez peu le sujet.

    Comme je te le disais précédemment, je ne pense pas qu'il faille voir le problème sous forme de sessions (peut être que quelqu'un de plus calé que moi te diras le contraire, crois-le sur parole), mais sous forme de caches.

    Est-ce que les informations chargées par Hibernate ont de forte chance d'être partagée entre les sessions ? Est-ce que les informations chargées sont spécifiques aux sessions ? Autrement dit, est-ce que le cache de niveau 1 est plus adapté que celui de niveau 2 ?

    Je crois qu'une fois que tu auras répondu à ces questions, tu pourras y voir plus clair. Mais encore une fois, je ne maîtrise pas forcément très bien le sujet, et il se peut que je ne tienne pas compte de certaines informations.

    Petite précision quant à l'utilisation de flush() : elle doit évidemment être utilisée avant le clear() et au court de la même session utilisateur.

    Si tu ne connaissais pas le site de la doc Hibernate, je te conseille de jeter un coup d'oeil à la page suivante :

    http://www.hibernate.org/hib_docs/v3/reference/fr/html/

    peut-être également : http://www.hibernate.org/hib_docs/v3...state-flushing concernant plus ton problème courant.

    ou encore http://www.hibernate.org/hib_docs/v3...-cacheprovider pour les caches.

    MiniMarch

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Par défaut
    Merci pour ces réponses.

    A vrai dire, j'ai lu cette doc, et bien que le flush() devrait théoriquement résoudre mon problème de rafraichissement des données, il n'en est rien, et je ne parviens à un bon résultat qu'avec un clear().

Discussions similaires

  1. Gestion des sessions avec applet
    Par Mister Nono dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 01/08/2006, 18h27
  2. [JSP] Gestion des sessions
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 28/06/2006, 10h44
  3. [Struts][JSP]gestion des session en JSP
    Par zola dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/04/2006, 16h23
  4. gestion des sessions
    Par jeff_! dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 22h09
  5. [tomcat] gestion des sessions
    Par sebos63 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 12/10/2004, 14h25

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