DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION)
20 janvier
2015
1
Intégration du Framework Hibernate
1. Introduction
Travailler...
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION)
20 janvier
2015
2
1. Mise en œuvre
Création d’un nouveau projet java simple sou...
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 clas...
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 q...
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION)
20 janvier
2015
7
Package def.hibernate.util
Dans ce package, on va créer une c...
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION)
20 janvier
2015
8
Le fichier de configuration de Hibernate hibernate.cfg.xml
On...
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION)
20 janvier
2015
9
Package def.hibernate.presentation
Pour le moment, il n’y a p...
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION)
20 janvier
2015
10
Il y aura une petite modification dans le fichier de configu...
Prochain SlideShare
Chargement dans…5
×

Framework Hibernate

1 461 vues

Publié le

Framework Hibernate
Couche DAO: persistance de données
Accès à la base
Mapping Objet/relationnel

Publié dans : Formation
  • Soyez le premier à commenter

Framework Hibernate

  1. 1. 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.
  2. 2. 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
  3. 3. DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier 2015 3 l
  4. 4. 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
  5. 5. DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 20 janvier 2015 5 On analyse une des méthodes implémentée : insertProduit
  6. 6. 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) ;
  7. 7. 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.
  8. 8. 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.
  9. 9. 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 :
  10. 10. 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

×