Maîtrisez l’intégration du framework java Spring et et du framework java Hibernate en utilisant l’injection de dépendances, concept technique clé mis en oeuvre dans notre tutoriel Spring N°2. A travers une technique similaire à celle de l’accès aux données JDBC (voir notre tutoriel Spring N°5 ), utilisez les classes HibernateTemplate et HibernateDaoSupport fournies par le framework Spring. Créez enfin un DAO non intrusif dont les transactions seront gérés via un aspect spring AOP.
Ce tutoriel est un 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 IDE
Site officiel Spring Source Tool Suite (STS)
JDK 6
Eclipse 3.3.2 europa Entreprise
Spring 2.5.4
Spring IDE 2.1.0
Tutoriel Spring N°2 : injection de dépendances
Tutoriel Spring N°5 : accès aux données avec Spring JDBC
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.
Comprendre la stratégie d’intégration de Spring avec le framework Hibernate
Mettre en oeuvre la classe HibernateTemplate fournie par Spring
Mettre en oeuvre la classe HibernateDaoSupport fournie par Spring
Comprendre les impacts du choix du DAO sur le caractère intrusif du code
Créer un DAO non intrusif grance Spring et la programation orientée aspects.
Documentation officielle Spring et frameworks de mapping Objet relationnel
10 tutoriaux spring framework objis
Introduction
Partie 1 : préparation de l’environnement
Partie 2 : Mise en oeuvre HibernateTemplate
Partie 3 : Mise en oeuvre HibernateDaoSupport
Partie 4 : DAO hibernate non intrusif
Partie 5 : annotation @Repository
1h30.
Le Tutoriel Spring N°5 : accès aux données avec Spring JDBC a permis de mettre en oeuvre les classes JdbcTemplate et JdbcDaoSupport pour se connecter via Spring à une base de données relationelle, et y réaliser opérations CRUD (Create, Retrieve, Update, Delete) pour un objet Employe.
Vous allez réaliser un travail similaire avec Hibernate, qui propose le Template : HibernateTemplate et le DAO HibernateDaoSupport.
Reprendre les parties 2, 3, 4, 5 du tutoriel ’accès aux données avec Spring JDBC’ avec cette fois le nom de projet eclipse ’springdemohibernate’
Rappel :
Partie 2 : création et alimentation de la base de données
Partie 3 : création du projet Spring (ici ’springdemohibernate’)
Partie 4 : beans pour l’accès aux données
Partie 5 : domaine métier (classe Employe)
Domaine métier

A l’aide de la Documentation de référence de Spring, mettez en oeuvre la stratégie de création d’un DAO via la classe HibernateTemplate à travers la méthode saveEmployeHibernateTemplate(Employe)
REMARQUE : Il vous faudra mettre dans le Classpath de votre application TOUS les jars de l’API Hibernate 3.2.6 (core).
Proposez dans un package com.objis.dao.hibernate une mise en oeuvre de 2 DAOs implémentant une interface IEmployeDao avec méthodes :

DAO via classe HibernateTemplate
Le premier DAO (EmployeHibernateDaoTemplate) mettra en oeuvre une injection du HibernateTemplate.
bean SessionFactory

Déclaration Dao

DAO via classe HibernateDaoSupport
Le deuxième DAO (EmployeHibernateDaoSupport) étendra la classe HibernateDaoSupport de Spring (com.springmvcframework.hibernate3.support.HibernateDaoSupport)
Les 2 DAOs de la partie 2 ci-dessus ont l’inconvénient d’être intrusifs. En effet ils impliquent du code Spring à l’intérieur du DAO.
Imaginez une implémentation de DAO Hibernate ayant les caractéristiques suivantes :
1) implémente IEmployeDao
2) ne contient pas de code Spring (Aucun import org.springframework...)
3) bénéficie de la valeur ajoutée de Spring (injection dépendances)
Le prix à payer pour cela : gérer vous même les aspects techniques liées à l’utilisation de la session et de la transaction hibernate.
Analysez ce que devient l’implémentation de la méthode saveEmploye :

Expliquez
Expliquez la configuration d’hibernate qui permet de réduire l’implémentation de la méthode ci-dessus à ceci :

Analysez l’implémentation de la méthode ci-dessus à ceci :

Notez qu’il n’ya aucune référence à une transaction hibernate.
Un gestionnaire de transaction Hibernate implémenté sous forme d’aspect grace au tisseur d’aspect Spring AOP permet d’alléger le code ainsi.
Celui-ci interceptera tout appel à une méthode du DAO, déclenchera une transaction et ce avant l’exécution de la méthode.
Cette stratégie est présentée dans le chapitre 12 de la documentation Spring
Configuration du gestionnaire de transaction
Les étapes suivantes sont necessaires :
Ajout du bean (myTransactionManager) gestionnaire de transaction Hibernate
Ajout du greffon (txAdvice) gérant l’interception d’appel de tout ou partie des méthodes du DAO
Configuration AOP associant le greffon à la coupe
Ajoutez le code suivant dans le fichier de configuration de Spring
Expliquez la ligne suivante du fichier : ’tx:method name="save*" propagation="REQUIRED"/’ Codez dans la classe de test du DAO la méthode
Pourquoi préférer l’Interface IEmployeDao à une classe concrète ?
Annotez le DAO EmployeHibernateDaoSupport , en utilisant l’annotation @Repository, comme le permet Spring.
Optimisations du fichier spring-data.xml
Réalisez les mêmes optimisations que dans la partie 8 du tutoriel Spring JDBC
Dans ce tutoriel, vous avez pratiqué la mise en oeuvre de l’intégration de Spring avec le framework Hibernate.
Spring sait donc s’interfacer avec un framework de mapping comme Hibernate, mais aussi, et de la même façon (classes Template et DaoSupport) avec d’autres frameworks de mapping comme Toplink ou iBatis.
L’interface avec des frameworks de vue comme Spring et JSF est tout aussi élégant . Découvrez en particlier le cas d’intégration struts / Spring avec notre tutoriel Spring N°7 : intégration Spring / Struts.
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