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 transaction auto update [Data]


Sujet :

Spring Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 38
    Points : 33
    Points
    33
    Par défaut Spring transaction auto update
    Bonjour,
    J'utilise un systeme de service manager avec un interceptor sur les transaction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        <bean id="orga_manager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            <property name="transactionManager" ref="transactionManager" />
            <property name="target" ref="orga_manager_T" />
            <property name="transactionAttributes">
                <props>
                    <prop key="*">PROPAGATION_REQUIRED</prop>
                </props>
            </property>
        </bean>

    Mon problème est que dans la méthode appellé dans le service en question
    je fais un Dao_get sur un objet Db, jusque la je le récupère .
    ensuite je fait un set d'une valeur bidon et lui me fait un update automatique, lors de la sortie de la méthode sans doute due au commit de la transaction fait automatiquement mais je comprend pas pourquoi le set force un update.

    Hors j'aimerait qu'il ne me fasse pas l'update automatique mais qu'il me laisse décider ou pas si je doit faire appel à une méthode dans mon dao de type saveorupdate .

    Je sais pas si j'ai été très claire , mais j'espère que quelqu'un pourrait m'aider a comprendre comment je pourrait faire.

    Merci d'avance a ceux qui sauront m'aider.

  2. #2
    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 166
    Points
    4 166
    Par défaut
    Je ne suis pas certain d'avoir tout compris à ton problème.
    Hibernate envoie les instructions SQL à la base de données au commit de la transaction (pour simplifier, car on peut paramétrer ceci).
    C'est donc normal que le fait de modifier une donnée par l'utilisation d'un setter, génère une requête update vers ta base.

  3. #3
    Nouveau membre du Club
    Inscrit en
    mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Merci pour la réponse , mais y a t'il un moyen de l'empecher de faire cette update ?

    car sinon la methode getHibernateTemplate().saveorupdate() sert a rien si il suffit de faire un set dans une methode service pour faire la même chose .

    car je suis habituer a faire mon
    obj1 = dao.get(int code);
    obj1.setAdresse("toto");
    dao.saveorupdate(obj1);

    hors il me fait l'update sans meme que j'ajoute le dao.saveorupdate(obj1) ce qui a tendance a m'embéter pour de futurs évolutions dans l'application.

  4. #4
    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 166
    Points
    4 166
    Par défaut
    Ca doit être un problème de configuration.
    Ton objet est-il encore attaché à une session Hibernate ?
    J'imagine que oui, sinon il n'y aurait pas de mise à jour possible.
    Il faut donc qu'il soit détaché, ainsi tu seras obligé de faire un save/update/saveOrUpdate dessus.

  5. #5
    Nouveau membre du Club
    Inscrit en
    mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    je pense qu'il est attaché à la session hibernate puisque appellé dans mon service qui est gerer par le proxy de transaction .

    a par l'appeller avant d'appeller autrement avant la methode dans se service, y a autre moyen de le détacher simplement ?


    merci pour les infos sa m'aide bien .

  6. #6
    Nouveau membre du Club
    Inscrit en
    mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    je m auto répond.

    on peut en hibernate détaché tres simplement un bean
    en utilisant la méthode evict(Object obj) de la session hibernate

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Je suis dans le même cas, je modifie un objet mais ne fait pas d'appel à update(). Malgré tout, l'objet est sauvegardé en base. J'ai beau chercher je ne trouve pas comment désactiver ce comportement qui est pour moi complètement absurde. Dans ce cas on n'a plus la main sur ce qui est enregistré ou pas et les méthodes save et update ne servent à rien.

    Quelqu'un sait-il comment désactiver ce comportement?
    Merci!

  8. #8
    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 166
    Points
    4 166
    Par défaut
    C'est le fonctionnement standard.
    Si tu ne veux pas qu'un set entraine une modification en base, il faut le faire sur un objet détaché d'une session.

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

Discussions similaires

  1. [Data] Spring, transactions et threads
    Par cecile_31 dans le forum Spring
    Réponses: 8
    Dernier message: 16/07/2008, 13h47
  2. Composant Auto Update
    Par engi dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/12/2007, 11h50
  3. Réponses: 1
    Dernier message: 12/06/2006, 19h02
  4. [ spring ] transaction tomcat
    Par hocinema dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 11/10/2005, 21h04
  5. [DirectPlay] Auto update ??
    Par k'n1 dans le forum DirectX
    Réponses: 11
    Dernier message: 28/02/2005, 03h09

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