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

Spring Java Discussion :

Spring + hibernate + sessionInViewFilter : problème d'autogoal avec flush


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut Spring + hibernate + sessionInViewFilter : problème d'autogoal avec flush
    Bonjour,

    Continuant mon apprentissage de spring et hibernate, j'ai découvert un truc qui m'a passablement effrayé:

    Un objet attaché à une session hibernate se sauve automatiquement lorsque la session est flushé. Mon problème c'est que souvent, il arrive que je commence à modifier un objet que j'ai au préalable chargé puis qu'entre temps je fasse appel à d'autres méthodes DAO (par ex. pour des tests), dont certaines contiennent des find qui peuvent déclencher un flush.

    Si cela arrive, hibernate essaie de sauver un objet que j'ai pas fini de retoucher, déclenchant des problèmes de not null etc....

    Le rêve serait que hibernate ne fasse jamais d'update sans que je le demande explicitement mais d'après le forum d'hibernate c'est impossible, celui qui a demandé ça s'est limite fait insulté par des intégristes.

    Eventuellement, j'arriverai à maitriser le problème entre ma couche business et les couches DAO inférieures. Mais par contre, si l'entité est manipulée par l'UI et que l'UI fait un appel à une classe business pendant qu'elle est en train de bricoler avec, ça va poser problème.

    J'utilise un sessionInViewFilter fourni par Spring, j'ai pensé que mettre singleSession à false pourrait peut être aidé et me permettre d'avoir des sessions par transaction applicative (Un appel vers une classe business = une session) mais je suis pas sûr des effets de bord.

    Est-ce une bonne solution? Quelqu'un pourrait m'éclairer un peu sur le sujet? Ce serait cool merci.

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Le problème ne vient pas d'Hibernate mais de la façon dont tu gères tes sessions / transaction.
    Si tu ne commit pas ta transaction ou ne demandes pas un flush explicite, Hibernate ne le fera pas.

  3. #3
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Le problème ne vient pas d'Hibernate mais de la façon dont tu gères tes sessions / transaction.
    C'est vrai, néanmoins ça me préoccupe.

    Si tu ne commit pas ta transaction ou ne demandes pas un flush explicite, Hibernate ne le fera pas.
    Si justement....
    Certaines opérations faites avec la session déclenchent automatiquement un flush. Et dans ce flush sont pris les changements même partiels effectués sur les entités.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Citation Envoyé par _skip Voir le message
    C'est vrai, néanmoins ça me préoccupe.



    Si justement....
    Certaines opérations faites avec la session déclenchent automatiquement un flush. Et dans ce flush sont pris les changements même partiels effectués sur les entités.
    Peut être que ce sujet pourra t'intéresser

    http://forum.springframework.org/arc...p/t-11200.html

    Mais j'ai une question, tu gères manuellement tes session ou passes tu par getHibernateTemplate ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/08/2014, 09h23
  2. [Integration] Problème d'intégration d'un Applet JAVA tournant avec Spring / Hibernate / JPA
    Par anthony22360 dans le forum Spring
    Réponses: 1
    Dernier message: 02/07/2013, 16h41
  3. Problème d'entité inconnue avec Spring/Hibernate
    Par Yann1213 dans le forum Spring Web
    Réponses: 6
    Dernier message: 08/01/2013, 12h49
  4. Problème avec JSF + Spring + Hibernate
    Par chahrazedd dans le forum JSF
    Réponses: 1
    Dernier message: 31/07/2011, 15h38
  5. [Data] Problème de lazy avec hibernate et Spring
    Par Invité dans le forum Spring
    Réponses: 3
    Dernier message: 20/02/2008, 20h03

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