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 :

Transaction, concurrence écriture [Data]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 32
    Par défaut Transaction, concurrence écriture
    Bonjour à tous,

    Tout d'abord, les technologies Spring + Hibernate sont assez nouvelles pour moi donc j'espère être assez clair afin que vous puissiez m'aider à résoudre mon problème.

    J'ai un objet Personne (correspondant à la table personne dans ma base de données).

    Le service PersonneManager contient la méthode suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}, isolation=Isolation.SERIALIZABLE)
    public void enregistrerPersonne(Personne personne) {
    personneDao.enregistrerPersonne(personne);
    }
    La classe PersonneDao contient la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void enregistrerPersonne(Personne personne) {
    getSessionFactory().saveOrUpdate(personne);
    }
    Dans mon application, j'ai une vue permettant de modifier l'état civil d'une personne. Imaginons que deux utilisateurs chargent la même personne dans cette vue, la modifient puis lancent l'enregistrement. Je voudrais que lorsque le second utilisateur enregistre la vue, le fait que la personne a déjà été modifiée par un autre utilisateur soit détecté et que l'enregistrement du second utilisateur ne soit pas réalisé pour ne pas écraser les modifications faites par le premier utilisateur.

    Je pensais que le fait d'utiliser isolation=Isolation.SERIALIZABLE serait suffisant mais apparemment ce n'est pas le cas.

    Merci d'avance pour votre aide.

    Cordialement,

  2. #2
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 32
    Par défaut
    Pour mieux expliquer mon problème, j'ai fait le diagramme suivant:



    Merci pour votre aide.
    Images attachées Images attachées  

  3. #3
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 32
    Par défaut
    Bonjour,

    Pas de réponse ? C'est parce que mon problème n'est pas clair ou bien parce que vous n'avez pas d'idée de la solution ?

    Je continue les recherches de mon côté mais je n'ai toujours pas d'idées !!

    Cordialement,

  4. #4
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 32
    Par défaut
    J'ai trouvé la solution au niveau Hibernate : http://docs.jboss.org/hibernate/core...s-basics-apptx

    Mon problème maintenant est de savoir comment le mettre en place avec Spring ! C'est là que j'espère que vous pourrez m'aider.

    Merci d'avance.

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Le mieux serait soit de locker l'objet lors de sa récupération pour modification.

    Soit utiliser une colonne/propriété qui gère le versionnement des enregistrements/entités
    Lien
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 32
    Par défaut
    Merci pour votre réponse.

    Les doc de Spring et Hibernate sont tellement fournies qu'il est difficile de chercher exactement l'information dont on a besoin!

    Cordialement,

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

Discussions similaires

  1. Identifier des bases avec peu de transactions en écriture
    Par Arkhena dans le forum Administration
    Réponses: 3
    Dernier message: 21/09/2009, 09h32
  2. [transaction] Gestion de la concurrence d'accès
    Par fredop dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2009, 11h43
  3. Réponses: 5
    Dernier message: 16/10/2008, 19h14
  4. [hibernate] gestion de la concurrence en écriture
    Par hugo123 dans le forum Hibernate
    Réponses: 2
    Dernier message: 23/05/2008, 13h46
  5. [EJB2] Problème accès concurrents/transaction
    Par Gevaudan35 dans le forum Java EE
    Réponses: 3
    Dernier message: 18/10/2006, 19h22

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