Tutoriel Spring 3 : règles d’annulation transactions JDBC

/////Tutoriel Spring 3 : règles d’annulation transactions JDBC

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.

planning-formation-framework-spring-objis

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

 JDK 6

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

architecture-transaction-application-gestion-stock

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 !

tutoriel-spring-transaction-jdbc-config-projet-springsource-tool-suite-sts

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 :

tutoriel-spring-transaction-jdbc-couche-service-interface

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.

tutoriel-spring-transaction-jdbc-config-2

 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 :

tutoriel-spring-transaction-jdbc-config-1

 

tutoriel-spring-transaction-jdbc-config-3

 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’

tutoriel-spring-transaction-jdbc-couche-service-rollback-regle-0

 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 :

tutoriel-spring-transaction-jdbc-logs-1

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 !

tutoriel-spring-transaction-jdbc-couche-service-rollback-regle-0

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.

tutoriel-spring-transaction-jdbc-config-rollback-rule-1

 

tutoriel-spring-transaction-jdbc-logs-3bis

 Relancez en suite l’application et analysez désormais la sortie

tutoriel-spring-transaction-jdbc-logs-3

 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.

2018-01-29T13:04:01+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java