DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier
2015
1
Intégration du Framework Hibernate
1. Introduction
Travailler dans les deux univers que sont l'orienté objet et la base de données relationnelle
peut être lourd et consommateur en temps dans le monde de l'entreprise d'aujourd'hui.
Hibernate est un outil de Mapping objet/relationnel pour le monde Java. Le terme Mapping
objet/relationnel (ORM) décrit la technique consistant à faire le lien entre la représentation
objet des données et sa représentation relationnelle basée sur un schéma SQL.
Le but d’Hibernate
Hibernate s'occupe du transfert des objets Java dans les tables de la base de
données. En plus, il permet de requêter les données et propose des moyens de les
récupérer. Il peut donc réduire de manière significative le temps de développement
qui aurait été autrement perdu dans une manipulation manuelle des données via SQL
et JDBC.
Le but d'Hibernate est de libérer le développeur de 95 pourcent des tâches de
programmation liées à la persistance des données communes. Hibernate assure la
portabilité de votre application si vous changer de SGBD. Hibernate propose au
développeur des méthodes d’accès aux bases de données plus efficace ce qui devrait
rassurer les développeurs.
Hibernate permet d’assurer la persistance des objets de l’application dans un
entrepôt de données. Cet entrepôt de données est dans la majorité des cas une base
de données relationnelle, mais il peut être un fichier XML. Le Mapping des objets est
effectuée par Hibernate en se basant sur des fichiers de configuration en format
texte ou souvent XML.
Le Framework Hibernate touche la couche DAO (Data Acces Object) = la couche d’accès à
la base de données.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier
2015
2
1. Mise en œuvre
Création d’un nouveau projet java simple sous
Eclipse. Le projet va être sous l’arborescence
suivante :
Le projet va être organisé sous forme de
package, chaque package représente un
niveau d’une couche.
Il existe déjà 3 couches :
Couche présentation : c’est la classe
main pour le moment qui teste les
fonctionnalités du programme.
Couche métier : classe qui s’occupe
des traitements mais pour le moment
c’est une classe qui jour le rôle
d’intermédiaire entre présentation et
le dao.
Couche DAO : couche d’accès aux
données qui va implémenter les
différentes méthodes CRUD : ajout,
modification, suppression et
recherche…
DTO : Data Transfert Object est un
objet de transfert de données
circulent sur toutes les couches.
Package def.hibernate.dto
On commence à créer la classe de persistance, la classe Produit.java
Package def.dao DAO
Package def.dto DTO
Package def.presentation
Les librairies : ensemble de fichier .jar
Fichier XML de configuration Hibernate
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier
2015
4
On créée le fichier de Mapping Hibernate correspond à la classe Produit. On doit créer pour
chaque entité persistance une classe java et un fichier de Mapping .hbm.xml.
Package def.hibernate.dao
On créé l’interface qui va définir les différentes méthodes qu’on va implémenter dans la
couche DAO. Notre classe doit contenir les principales fonctions : ajout, modification,
suppression et recherche. L’interface doit être nommée sous la forme : IProduitDAO
On doit créer après l’implémentation de cette interface.
On nomme la nouvelle implémentation ProduitDAOImpl qui implémente l’interface
IProduitDAO. Elle doit implémenter toutes les méthodes définit dans l’interface.
Public class ProduitDAOImpl implements IProduitDAO
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier
2015
5
On analyse une des méthodes implémentée : insertProduit
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier
2015
6
La méthode est une fonction privée qui ne renvoie rien mais qui prends en paramètre l’objet
produit chargé pour pouvoir l’enregistrer dans la base de données.
On ouvre une session à la base de données à l’aide de l’objet sessionFactory de Hibernate.
On créée une transaction. A l’aide de la méthode save ou saveOrUpdate de hibernate, on
fait insérer un nouveau produit dans la base de données. Pour finaliser la transaction, il faut
comité et fermer la session à la fin.
Package def.hibernate.métier
On définit l’interface de la couche métier sous le nom IProduitMetier ou IProduitService.
On implémente les méthodes de cette interface dans la classe ProduitServiceImpl.
La classe implémentation va contenir juste l’appel aux méthodes de la classe DAO.
Cette classe va jouer l’intermédiaire entre la couche présentation et la couche DAO.
Expliquant l’exemple de la méthode insertProduit. On créée un objet produitDao instance de
la classe ProduitDAOImpl pour pouvoir accéder aux méthodes de cette dernières. A travers
cet objet on appelle la méthode insert produit comme suit :
produitDao.insertProduit (produit) ;
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier
2015
7
Package def.hibernate.util
Dans ce package, on va créer une classe secondaire qui va juste jouer le rôle d’un utilitaire
pour pouvoir lire le fichier de configuration de Hibernate.
Il y aura une création de session sessionFactory de Hibernate pour pouvoir accéder et lire le
fichier de configuration hibernate.cfg.xml.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier
2015
8
Le fichier de configuration de Hibernate hibernate.cfg.xml
On créée un fichier xml sous le nom de hibernate.cfg.xml sous la racine du projet. C’est le
fichier de configuration de Hibernate.
Le fichier contiendra la configuration des données liées à la base comme le driver, url, le
login et le mot de passe. Le fichier contient aussi l’appel à la classe JDBCTransactionFactory
de Hibernate, définit le dialect Mysql qui est utilisé. Le plus important c’est la définition d
fichier de Mapping produit.hbm.xml. A chaque fois qu’on crée un nouveau fichier de
Mapping, une ligne sera ajoutée dans ce fichier.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier
2015
9
Package def.hibernate.presentation
Pour le moment, il n’y a pas d’interface de présentation. On va créer une classe principale
main pour pouvoir tester les différentes méthodes déjà implémentées.
Utilisation des annotations
Vu que l’écriture des fichiers de Mapping n’est mas aussi facile, il y a trop risque d’erreur.
On peut remplacer ces fichiers par les annotations dans les classes persistantes.
La classe devient comme suit :
Top Related