Maîtrisez gestion de transaction avec Spring. Découvrez les 5 caractéristiques d’une transaction. En particulier, mettez à l’oeuvre les règles d’annulation d’une transaction avec un exemple d’application de gestion des stocks.
Créez des exceptions métiez et déclenchez l’annulation d’une transation lorsque ces exceptions métiers sont levées.
Analysez comment Spring utilise la programmation Aspects pour intercepter des appels à une couche Service.
Objis, spécialiste de la formation Java, est heureux de vous offrir ce
tutoriel, extrait de séances pratiques de notre formation SPRING.
Les + objis
70% de travaux pratiques
Clé USB avec tous les outils utilisés + Corrigés TPs
Bilan pédagogique individuel + conseils
Prérequis, outils et versions
Liens utiles
10 tutoriels spring
TELECHARGEMENT jar AopAlliance (inclus ds Spring 2 mais absent Spring 3)
Programme
Rappels Transaction Spring
Introduction projet gestion de stocs
Partie 1 : codage couche service et couche DAO
Partie 2 : interception des appels couche service
Partie 3 : exceptions métiers
Partie 4 : règles de rollback
Rappels sur les transactions Spring
QUESTION 1 : qu’est ce qu’une transaction ? Citez 2 cas d’utilisation d’une transaction.
QUESTION 2: rappelez les 5 caractéristiques d’une transaction Spring
QUESTION 3 : qu’est ce qu’une règle de Rollback ?
QUESTION 4 : qu’est ce que la propagation d’une transaction ?
QUESTION 5 : qu’est ce qu’une transaction ‘Read-Only‘ ?
QUESTION 6 : qu’est ce qu’un niveau d’isolation d’une transaction ?
QUESTION 7 : qu’est ce qu’un timeout de transaction ?
QUESTION 8 : quel role peux jouer la programmation orientée aspects dans la gestion d’une transaction jdbc ? transaction hibernate ? Expliquez
Introduction projet gestion de Stocks + préparation DB
Nous proposons un projet dont la configuration (volontairement incomplète !) met en évidence la volonté d’intercepter les appels de méthodes métier en utilisant un aspect transactionnel fournit par Spring.
Le lancement de la classe principale du projet eclipse initial (SpringTx) met en évidence la possibilité d’avoir un nombre d’articles….négatif !
La classe principale du projet est StpringTx.java . Le fichier de configuration Spring est applicationContext.xml
Le but de ce TP est de mettre en oeuvre la configuration permettant de déclencher un Rollback en base de données dès lors qu’une des exceptions métiers sera levée :
— Article inexistant (ArticleNotFoundException)
— quantité demandée négative (QtyNegativeException)
— quantité demandée plus importante que quantité disponible (NotEnoughArticleInStockException)
Partie 1 : interface et exceptions métiers
Dans le cadre d’une application de gestion de stock, vous devez implémenter les interfaces métiers suivantes :
Besoin : si une des exceptions métier est déclenchée, vous devrez faire le necessaire pour que la base de donnée reste dans un état stable et cohérent (ex : pas de quantité négative d’article ! )
Partie 2 : configuration couches DAO et Service
Analysez la configuration de la source de données ainsi que des couches DAO et Service.
Expliquez.
Reste à mettre en oeuvre des accès transactionnels au méthodes de la couche service.
Partie 3 : interception appels couche service
Pour mettre en oeuvre la ‘surveillance transactionnelle’ des appels de méthodes de la couche service , nous aurons besoin de déclarer deux nouveaux namespaces :
— le namespace ‘aop’ va permettre d’intercepter l’appel de méthode et déclencher une transaction
— le namespace ‘tx’ va permettre de spécifier les attributs de transactions, en fonction de la méthode appelée.
Analysez la configuration suivante :
Expliquez
Partie 4 : lancement de l’application
Assurez-vous que le serveur de base de données est démarée (ici, à travers serveur WAMP)
Créez une base de données nommée ‘stock’
Lancez le programme SpringTx , via eclipse ou via le script ant (ant run)
Le programme réalise successivement les taches suivantes :
0) suppression de la table ‘articles’ si celle-ci existe
1) Construction d’une table ‘articles’ avec 3 articles
et leurs quantité respectives, et en particulier 12 articles de type articleId001
2) Retire 2 articles de type article articleId001 du stock. Il en restera 10.
3) Retire -1 article du stock. Renvoi une exception pour signifier que la
quantité doit être positive.
4) Retire 11 aticles du stock. Lance une exception par on demande plus d’articles que le stock en possède.
Suite au lancement, voici les logs :
Conclusion :
— Les exceptions métiers ont bien été levées
— notre application n’a pas ‘tenu’ compte de ces exceptions, et nous avons osé mettre une quantité négative d’article en base !
Par la suite nous allons remédier à cela et mettant en oeuvre règles de rollback.
Partie 4 : règles de rollback
En utilisant la documentation de référence Spring 3 Modifiez la configuration du greffon transactionnel afin de déclencher un RollBack lorsqu’une exception métier est déclenchée.
Relancez en suite l’application et analysez désormais la sortie
Expliquez.
Problèmes rencontrés lors de migration Spring 2.x vers Spring 3.x
1) java.lang.ClassNotFoundException: org.aopalliance.intercept.MethodInterceptor
SOLUTION : ajouter dans le classpath le jar de l’aop alliance: com.springsource.org.aopalliance-1.0.0.jar
2) java.lang.NoClassDefFoundError: org/aspectj/weaver/BCException
SOLUTION : Ajouter dans les librairies aspect-weaver.jar disponible dans le kit de développement AJDK.