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 :

rollback de transaction sur exception metier uniquement.


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Par défaut rollback de transaction sur exception metier uniquement.
    Bonjour,

    Je souhaite créer une transaction qui ne fasse pas un Rollback lors d'erreur SQL mais uniquement lorsque j'envoi des exception métier.

    J'ai une procédure du genre :
    1/ démarre la transaction
    2/ effectue des choses importantes susceptible de déclancher le Rollback.
    3/ insert/update des données en base mais qui ne doivent pas planter la transaction.
    4/ d'autre insert/update
    5/ effectue des choses importantes susceptible de déclancher le Rollback.
    6/ tout va bien : commit.

    Comment faire pour que :
    - un plantage en 2 n'empêche pas le déroulement de la procédure et ne rollback pas la transaction et que les données soient insérés en 4
    - les données insérés en 3 et 4 ne soient rollbacké QUE si il y a Exception en 5.
    - que tout soit comité en 6 si aucune Exception métier (en 5)

    J'ai regardé les options PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW and PROPAGATION_NESTED mais je m'y perd un peut.

    Merci d'avance.

    P.

  2. #2
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Tu dois pouvoir configurer ce comportement avec rollbackFor et noRollbackFor.
    À chercher dans la doc pour plus de précisions (avec les annotations, c'est super facile).

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Par défaut
    Ce que je ne comprend pas c'est comment je doit configurer ma transaction.
    dois'je faire des savePoint régulier?
    dois'je désactiver/suspendre la transaction dans mon point 3/

    je ne sait pas trop comment aborder le sujet (ni la doc)

    j'aimerais des pistes..


    Merci.

  4. #4
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Par défaut
    Merci pour la piste.
    Au début de l'article (cf piste) , dans la définition il est dit : "La transaction n’est validé que si chacune des taches unitaires qu’elle regroupent se sont déroulées correctement (COMMIT). Dans le cas contraire (si une des taches unitaires échoue) l’ensemble des données traitées retrouvent leur état initial(ROLBACK)."

    Dans non cas, je souhaite que certaines taches ne puissent pas annuler la transaction (même si ce sont des opération en bases) et que en cas de ROLLBACK (causé par des opération pouvant causer l'annulation) toutes les taches soient annulées.

    Pour reformuler ma question :
    Dans une transaction, Y a t'il un moyen de catcher une exception sur certaines opération en base et de dire "cette erreur n'est pas grave, continue la transaction comme si de rien n'était"

    une sorte de IGNORE sur certaine erreurs...

    suis-je clair?

    merci.

    Patrice.

  6. #6
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Si tu utilises le xml pour configurer tes transactions.
    Si tu utilises les annotations.

    Tu peux paramétrer ces comportements avec "no rollback for" et "rollback for".

Discussions similaires

  1. [EJB3.1] Transaction rollback : Comment gérer les Exceptions ?
    Par piemur2000 dans le forum Glassfish et Payara
    Réponses: 1
    Dernier message: 09/02/2012, 09h33
  2. [rmi]aide sur exception
    Par david06600 dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 31/08/2006, 17h30
  3. [CSS]Impression : élément sur première page uniquement
    Par iubito dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 15/08/2006, 15h05
  4. Réponses: 3
    Dernier message: 12/04/2006, 11h07
  5. [Global temporary]Transaction sur table temporaire
    Par tanatiel dans le forum Oracle
    Réponses: 9
    Dernier message: 12/10/2005, 16h38

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