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 (Voir notre tutoriel spring N°2) et programmation orientée aspects ( Voir notre tutoriel spring N°3)
Objis, spécialiste de la formation Java, est heureux de vous offrir ce tutoriel, extrait de séances pratiques de la formation SPRING dispensée par Objis.
Les + objis
70% de travaux pratiques
Clé USB avec tous les outils utilisés + Corrigés TPs
Bilan pédagogique individuel + conseils

+ de 100 tutoriaux java/jee Objis
10 tutoriaux spring framework objis
Objis, spécialiste formation java depuis 2005
Site officiel Spring Source Tool Suite (STS)
JDK 6
Eclipse 3.3.2 europa Entreprise
Spring 2.5.4
Spring IDE 2.1.0
Pour ce Tutoriel, le plugin Eclipse Spring IDE doit être au préalable correctement installé. Le tutoriel ’Installation plugin Spring IDE’ vous permet de maîtriser l’installation de Spring IDE.
10 tutoriaux spring framework objis
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 également 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
Documentation de référence Spring 2.5 / JDBC :
API 2.5 Spring :
Pool de connexion Apache DBCP (DataBase Connexion Pool) :
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
2h.
Questions
En utilisant l’API javadoc de Spring ainsi que la documentation officielle de Spring
Citez 4 packages Spring impliqués dans l’abstraction Spring JDBC
Roles et responsabilités de ces packages ?
Citez les classes et interfaces au coeur de l’API.
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 icone 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’icone 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 fichier formation.sql. Pour cela cliquez sur l’onglet ’importer’ puis bouton ’parcourir’.


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.


L’étape de création de la base de données et de création de données est terminée.
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
Ajoutez les librairies ’classiques’ de spring :
— spring.jar présent dans SPRING_HOME\dist
— commons-logging.jar présent dans SPRING_HOME\lib\jakarta-commons




Installation librairie driver JDBC
Ajoutez le driver de la base de données mysql-connector-5.jar. Pour l’avoir, dézippez le fichier TPSpring\outils\mysql\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 :
— commons-dbcp.jar et commons-pool.jar présents dans SPRING_HOME\lib\jakarta-commons.
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 .

Ajoutez toutes les librairies du répertoire lib dans le ’build path’ d’Eclipse : Menu project/properties/Librairies/Add jars.

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

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 ?
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

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.
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
A l’aide de la Documentation de référence, mettez en oeuvre les stratégies SimpleJdbcTemplate et NamedParameterJdbcTemplate en créant les méthodes suivantes :
— saveEmployeSimpleJdbcTemplate()
— saveEmployeNamedParameterJdbcTemplate(Employe)
Quelle est la valeur ajoutée de ces 2 dernières méthodes ?
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
— int getEmployesCount() ;
Le premier DAO (EmployeJdbcDaoTemplate) mettra en oeuvre 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
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 ’
Annotez le DAO EmployeJdbcDaoSupport , en utilisant l’annotation @Repository, comme le permet Spring 2.5

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
Dans ce tutoriel, vous avez pratiqué la mise en oeuvre de l’intégration de Spring avec une base de données relationelle.
Spring sait donc s’interfacer avec un la plupart des bases de données du marché à travers des classes Template et DaoSupport.
L’interfaçage avec des frameworks de mapping Objet/Relationnel comme Hibernate, TopLink ou iBatis est tout aussi élégant . Découvrez en particulier le cas d’intégration Hibernate Spring avec notre tutoriel Spring N°6 : intégration Spring / Hibernate.
Le chemin le plus court pour avoir les réflexes et la méthodologie du bon développeur Spring :
Si vous appréciez notre sens du partage, devenez gratuitement membre ’classic’ du Club Objis :
Votez pour les prochains tutoriaux à publier
Préparez vos entretiens techniques
Valorisez votre profil / expertise
Identifiez des opportunités d’emploi
Recevez la newsletter objis.com