Framework Hibernate

10
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.

Transcript of Framework Hibernate

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

3

l

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 :

DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier

2015

10

Il y aura une petite modification dans le fichier de configuration d’hibernate, on ne définit

plus les fichiers hbm.xml mais on définit les classes modèles .java