Tutoriel Spring N°4.1 : Accès données avec Spring JDBC

Avec Objis, spécialiste formation Spring , maîtrisez l’utilisation de Spring JDBC pour créer rapidement votre couche d’accès aux données JDBC (DAO). Utilisez les classes JdbcTemplate et JdbcDaoSupport fournies par Spring. Comparez la configuration de l’injection de dépendances avec XML et avec les annotations @Repository. Mettez en pratique les deux concepts clés de framework Spring : injection de dépendances et la programmation orientée aspects.

Objectifs

- 1 : Maîtriser la valeur ajoutée de Spring pour l’accès aux données. En particulier :
— Diminution de la taille du code, grâce à classes fournies par Spring.
— Gestion des exceptions réalisée par Spring pour vous.
- 2 : Mettre en œuvre de bonnes pratiques Spring JDBC. Par exemple :
— Configurer la source de données (DataSource) JDBC comme un bean Spring et l’injecter à l’exécution.
— Utiliser le bean PropertyPlacerConfigurer afin de mettre les informations de connexion dans un fichier de propriétés
- 3 : Injecter les classes Templates proposés par SPRING
— JdbcTemplate et variantes (SimpleJdbcTemplate, NamedParamJdbcTemplate)
- 4 : Créer vos DAO en étendant la Classe JdbcDaoSupport de SPRING
- 5 : Annoter vos classes DAO via @Repository

Programme

- Partie 1 : cours et analyse
- Partie 2 : création et Alimentation base de données
- Partie 3 : projet eclipse ’demospringdatabase’
- Partie 4 : beans d’accès aux données
- Partie 5 : domaine Métier
- Partie 6 : Mise en oeuvre ’JDBC pur’ dans Spring
- Partie 7 : Mise en oeuvre JdbcTemplate
- Partie 8 : Mise en oeuvre DaoSupport
- Partie 9 : Mise en oeuvre @Repository

Durée

2h.

Partie 1 : Analyse

Questions

En utilisant l’API (javadoc) de Spring ainsi que la documentation officielle :
- Citez 4 packages Spring impliqués dans l’abstraction Spring JDBC
- Roles et responsabilités de ces packages ?
- Citez les classes et interfaces au cœur de l’API.

Partie 2 : Création et Alimentation base de données

Installation Wamp5
- Téléchargez la dernière version de WAMP5 , serveur Apache2/PHP5/MYSQL5 sous Windows
- Lancez l’installation Installez WAMP5 en double-cliquant sur le fichier téléchargé.

- Acceptez la licence
- Choisissez le répertoire d’installation par défaut ( c :\wamp )


- Cliquez sur Install
- Choisissez les paramètres PHP par défaut. Next.
- A lécran de récapitulation des options d’installation, cliquez sur finish

- L’écran de fin d’installation vous précise que l’installation est terminée et vous propose de lancer le serveur. Cliquez sur le bouton Finish.
- Une icône signale que les 2 services (Apache , Mysql) de Wamp sont bien installés. Attention à libérer le port 80 (skype,msn...) sinon le serveur web ne se lancera pas, ce qui empèchera d’utiliser phpMyAdmin, l’interface d’administration de la base de données.

Données de test

- Cliquez gauche sur l’icône de Wamp, puis lien ’PhpMyAdmin’. L’interface d’administration de PhpMyadmin apparaît

- Créez une base de données nommée ’formation’ . Pour cela tapez ’formation’ dans la zone de champ texte ci-dessus et appuyez sur bouton ’créer’. l’écran suivant apparait.

- Importez dans la base le fichierformation.sql. Pour cela sélectionnez l’onglet ’importer’ de WAMP ...

... puis cliquez sur le bouton ’parcourir’. Chercher l’endroit ou vous avez téléchargé le fichier.

Après avoir identifié le fichier, appuyez sur le bouton ’Exécuter’.

Le script crée une table (employe) et y insere 3 enregistrements.Après Importation des données, vous obtenez l’écran suivant.

Après avoir cliqué sur le lien associé à la table employé (menu gauche), l’onglet ’Afficher’ permet de voir les données de la table.

L’étape de création de la base de données et de création de données est terminée. Prochaine étape : création d’un projet eclipse pour notre développement.

Partie 3 : projet eclipse ’demospringdatabase’

Création du projet Spring

Avec Eclipse, à l’aide du plugin SpringIDE, créez un projet Spring nommé ’demospringdatabase’ . :
- File/new Project/
- Spring/Spring project
- Nom : demodatabase. Puis Finish

Installation des librairies Spring
- Créez un répertoire ’lib’ à la racine du projet (Click droit sur le projet / New / Folder). Ce répertoire servira à mettre toutes librairies necessaires.

- Bouton Finish.

Installation librairies Spring 4.

PNG - 43 ko
librairies

Installation librairie driver JDBC

- Ajoutez le driver de la base de données mysql-connector-5.jar. Pour l’avoir, téléchargez et dézippez le fichier mysql-connector-java-5.0.5.zip . Le jar se trouve à la racine du dossier.

Installation libairies Pool de connection

Ajoutez les librairies du pool de connexion DBCP .

Pour Spring 4.x, téléchargez commons-dbcp et commons-pool et récupérez les dernières versions des jars commons-dbcp.jar et commons-pool.jar

Configuration Log4j

- Ajouter la librairie log4j.jar présent dans SPRING_HOME\lib\log4j.
— dans le répertoire ’src’ du projet, ajoutez l’exemple de fichier log4j.xml fournit et
- Ajoutez toutes les librairies du répertoire lib dans le ’build path’ d’Eclipse : Menu project/properties/Librairies/Add jars.

PNG - 64.9 ko
log4j

Fichier de déclaration des beans
- En utilisant l’assistant Spring IDE de création de bean Spring, créez à la racine ’src’ du projet ’demospringdatabase’, un fichier spring-data.xml qui sera dédié à la définition de beans relatifs à la base de données. En cas de difficultés de création du fichier, voir le Tutoriel ’Injection de dépendences

Partie 4 : beans d’accès aux données

Configuration propriétés de la base de données
- Créez le package com.objis.spring.demodatabase
- Créez dans le package com.objis.spring.demodatabase un fichier db.properties contenant des informations de connexion en base de données :
— url de connexion
— login
— password
— Driver

- Déclarez dans spring-data.xml un bean de type PropertyPlaceholderConfigurer, qui assure la récupération dynamique des informations présentes dans le fichier de propriété db.properties

Déclaration beans ’datasource1’ et ’datasource2’
- Dans le fichier spring-data.xml, déclarez 2 beans ’datasource1’ et ’datasource2’ correspondant à 2 types de configuration de la base de données
— ’datasource1’ : configuration via la classe org.springframework.jdbc.datasource.DriverManagerDataSource, avec information d’accès à la base (URL, Driver ; login, pwd) écrites ’en dur’ dans le fichier XML
— ’datasource2’ : configuration via classe org.apache.commons.dbcp.BasicDataSource, (de Apache DBCP DataBase Connexion Pool) avec informations d’accès à la base récupérées d’un fichier de propriété : db.properties du package com.objis.spring.demodatabase

- Quelle est la ’meilleure pratique’ entre ces 2 dataSources ? Pourquoi ?

Partie 5 : Domaine Métier

Dans cette partie, vous crééez le Bean ’Employe’ possédant les attributs correspondants aux champs de la base de données :
— ID
— login
— password
— nom
— prenom
— email
— rôle

Enregistrement d’un employé en Base de données
- Dans Eclipse, créez le package ’domaine’
- Dans le package domaine, et en utilisant assistant Eclipse (Cliquez droit sur le code + Source/Generate...) créez pour le bean Employe ainsi que :
— un constructeur sans paramètre : Employe()
— un constructeur avec les 7 paramètres : Employe( int,String,String,String,String,String)
— Getters/Setters pour chaque propriété de la classe Employe

Partie 6 : Mise en oeuvre JDBC pure dans Spring

Dans cette partie vous analysez l’utilisation de Spring avec JDBC pure.

- Ajoutez la librairie JUnit dans le répertoire ’lib’ puis dans le ’build path’ Eclipse.
- importez dans le package com.objis.spring.demodatabase le fichier SpringJDBC.java

SpringJDBC implémente les méthodes :
— saveEmploye() : Enregistrement d’un employé en base, avec méthode JDBC pure
— getEmployebyId() : récupération d’un objet Employe à partir de son id

Ci-dessous méthode getEmployeById().

- Analysez le code de ces méthodes.

- importez dans le package com.objis.spring.demodatabase.test le fichier TestSpringJDBC.java fournis.

Ci-dessous l’arborescence du projet :

- Testez la méthode saveEmploye. Pour cela cliquez droit sur la méthode testSaveEmploye() de TestSpringJDBC puis Run as JUnit Test.

- Analysez les résultats du test : création d’un nouvel enregistrement en base de données.

- Testez la méthode getEmployeById. Pour cela cliquez droit sur la méthode testGetEmployeById() de TestSpringJDBC puis Run as JUnit Test.

- Analysez les résultats du test : création d’un objet employe non Null.

Partie 7 : Mise en oeuvre JdbcTemplate

Spring propose la classe JdbcTemplate pour vous simplifier l’accès à une base de données en Java.

- Déclarez un bean JdbcTemplate dans le fichier de configuration de Spring

- Implémentez dans SpringJDBC la saveEmployeJdbcTemplate() : Enregistrement d’un employé en base, avec Template jdbcTemplate, fourni par SPRING

- Ecrivez une méthode de test JUnit associée à la méthode saveEmployeJdbcTemplate()

TELECHARGEZ le PROJET ECLIPSE CORRIGE

Partie 8 : Mise en oeuvre DaoSupport

- Proposez dans un package com.objis.dao.jdbc une mise en oeuvre de 2 DAO implémentant une interface IEmployeDao avec méthodes :

— Employe getEmployeById(int id) ;
— Employe getEmployeByLogin(String login) ;
— void saveEmploye(Employe employe) ;
— List getAllEmployes() ;
— int getEmployesCount() ;

Le premier DAO (EmployeJdbcDaoTemplate) mettra en œuvre une injection du jdbcTemplate.

Le deuxième DAO (EmployeJdbcDaoSupport) étendra la classe org.springframework.jdbc.core.support.JdbcDaoSupport de Spring.

TELECHARGEZ le PROJET ECLIPSE CORRIGE POUR DAOs

Partie 8 : Annotations Spring

Depuis Spring 2.0, l’utilisation des annotations à l’intérieur du code des beans contribue à une réduction du code XML de configuration de ces beans dans le fichier de définition XML. En particulier, les annotations @Repository (couche persistence), @Controller (couche web) et @Service (couche service) sont spécifique à Spring et héritent de l’annotation @Component de la spécification JEE (JSR 250).

REMARQUE : la translation d’exceptions représente une valeur ajoutée de la configuration des beans par annotations par rapport à la configuration XML.

A partir de la version 2, spring peut détecter des classes annotées, grace à la balise ’’. Cela nécessite la déclaration dans le fichier de déclaration des beans du namespace context.

- Annotez le DAO EmployeJdbcDaoSupport , en utilisant l’annotation @Repository.

Optimisation du fichier spring-data.xml

Nous allons modifier le fichier spring-data.xml de façon à ce que Spring tienne compte des annotations réalisées dans les beans.

- Déclarez le namespace ’context’.
- Informez SPRING du lieu ou se trouvent vos classes annotées (’’).
- Informez SPRING de votre stratégie d’Autowiring par défaut (default-autowire) pour tous les beans déclarés.

Ces actions sont réalisées dans le schéma ci-dessous :

- Commentez la déclaration du DAO EmployeJdbcDaoSupport dans spring-data.xml

Tests DAO

- Testez à nouveau l’accès aux données (méthodes testSaveEmploye et testGetEmployeById)

Le code de le classe de test est le suivant :

Les résultats :

TELECHARGEZ le PROJET ECLIPSE CORRIGE POUR @Repository

Gestion des exceptions

- Mettez en évidence la valeur ajoutée du mécanisme de translation d’exceptions de Spring

Partie 9 : Ajout couche Service

- Ajoutez dans un nouveau package le code d’une classe couche Service qui utilise une propriété de type Interface IEmployeDao.

PNG - 15.9 ko
tutoriel-spring-jdbc-ajout-couche-service5

- Injectez un DAO dans la couche service.

- Mettez en évidence un cas de conflit : Spring ne sait pas quel DAO injecter parmi les 2 DAOs qui implémentent l’interface.

- Proposez 2 stratégies pour gérer ce cas de conflit :
— > Stratégie 1 basée sur l’annotation @Repository (donner en paramètre de Repository un nom qui est le même que la propriété de la couche Service)
— > Stratégie 2 basée sur l’annotation @Qualifier à ajouter dans la couche Service (donner en paramètre un des noms donnés aux DAO via Repository)

Zip - 4.5 Mo
demoservicedao

Conclusion

Dans ce tutoriel, vous avez pratiqué la mise en oeuvre de l’intégration de Spring avec une base de données relationnelle.

Devenez certifié ’Développeur Concepteur Java’

Exprimez-vous comme un développeur professionnel. Utilisez les bons mots au bon moment. Concevez et développez avec assurance des applications Java Web Mobile. Rassurez vos futurs employeurs et clients. Devenez Certifié ’Développeur Concepteur Java’ Objis. + d’informations.

PNG - 214.3 ko
formation-java-distance-objis-3