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

Persistance des donn�es Java Discussion :

externaliser une methode pour g�rer une transaction Requires_new


Sujet :

Persistance des donn�es Java

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par d�faut externaliser une methode pour g�rer une transaction Requires_new
    Bonjour,
    j'utilise Spring et je veux externaliser une methode de classe pour gerer differemment les transaction.


    Au d�part voici mon code

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    @Transaction
    public class A {
     
      public List<Dto> methodA(...) {
          for (.............) {
            methodB(...);
          }
      }
     
      public Dto methodB(...) {
       .....
       if (...) {
          TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
       }
       ....
      }
     
    }
    Ce code annule toute la transaction et rien n'est stock� en base. Donc je decide d'utiliser @Transactional(propagation= Propagation.REQUIRES_NEW).
    Pour que �a marche, JE DOIS externaliser la m�thode methodB(...) dans une autre classe.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    @Transaction
    public class B {
     
      @Transactional(propagation= Propagation.REQUIRES_NEW)
      public Dto methodB(...) {
       .....
       if (...) {
          TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
       }
       ....
      }
    }
     
    @Transaction
    public class A {
     
       @Autowire
       B instanceB;
     
      @Transactional(propagation = Propagation.REQUIRED)
      public List<Dto> methodA(...) {
          for (.............) {
            instanceB.methodB(...);
          }
      }
     
    }
    Et �a marche

    Mais je suspecte qu'il y a une erreur de design avec cette m�thode. Je ne sais pas le designer d'une autre mani�re.
    Pouvez vous me dire comment faire (probablement un autre DESIGN PATTERN)

  2. #2
    Membre chevronn�
    Homme Profil pro
    Ing�nieur en g�nie logiciel
    Inscrit en
    Juin 2012
    Messages
    948
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : Ing�nieur en g�nie logiciel
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Juin 2012
    Messages : 948
    Par d�faut
    inutile de mettre ton transaction sur la classe si tu as des m�thodes qui ont pas besoin de transaction pour tes autres m�thodes

Discussions similaires

  1. M�thode pour inclure une langue
    Par HwRZxLc4 dans le forum Langage
    R�ponses: 14
    Dernier message: 20/03/2006, 09h22
  2. [MSSQL2K] methode pour reprendre une BDD incomprehensible
    Par igorzup dans le forum MS SQL Server
    R�ponses: 3
    Dernier message: 16/02/2006, 12h44
  3. R�ponses: 2
    Dernier message: 22/11/2005, 14h06
  4. [C#] Une seule m�thode pour plusieurs composants
    Par niPrM dans le forum Windows Forms
    R�ponses: 8
    Dernier message: 01/06/2004, 14h41
  5. [SWING][THREAD]M�thodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fen�tres
    R�ponses: 3
    Dernier message: 05/05/2004, 10h35

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