SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Session : Juillet 2009
Intervenant : Hubert KADIMA
Auditeur: Manuel RAMOS
SOMMAIRESOMMAIRE
 1- Qu’est-ce la persistance ?
 2 – Histoire d’Hibernate
 3 - Pourquoi utiliser
Hibernate ?
 4 – Architecture Hibernate
(Interfaces, bibliothèques)
 5 – Configuration (de base et
avancée)
 6 - Avantages/Inconvénients
 7 - Hibernate face à ses
concurrents
 8 - L’avenird’Hibernate
 9 - Démonstration
 10 - Bibliographie
 11 – Questions et réponses ?
Qu’est-ce que la persistance ?Qu’est-ce que la persistance ?
 La persistance est le concept fondamental du
développement d’applications
 C’est la couche plus basse d’une architecture
applicative
Qu’est-ce que la persistance ?Qu’est-ce que la persistance ?
Qu’est-ce que la persistance ?Qu’est-ce que la persistance ?
Qu’est-ce que la persistance ?Qu’est-ce que la persistance ?
Il faut absolument distinguer deux types de
persistance:
 Persistance d’objet
 Le modèle relationnel
Histoire d’HibernateHistoire d’Hibernate
 Les premières versions datent de novembre
2001, se généralisant dans l’industrie Java
 19/01/2002: Annonce de sa création par Gavin
King sur le site theserverside.com
 Sortie de l’ouvrage ‘Hibernate in Action’ en
2003, écrit par Christian Bauer
 Hibernate joint l’équipe JBoss.org en 2003
Pourquoi utiliserHibernate ?Pourquoi utiliserHibernate ?
 La programmation de la couche d’accès aux données avec
SQL/JDBC s’est révélée fastidieuse et trop longue
 L'intérêt est de pouvoir changer de base de données en
n'ayant besoin de ne modifier que la couche d'accès aux
données
 Développer des classes persistantes en accord avec les
caractéristiques du langage objet : association, héritage,
polymorphisme, composition et les collections Java
 Joindre l’univers de l’objet et du relationnel à travers le
mapping objet/relationnel (ORM)
Pourquoi utiliserHibernate ?Pourquoi utiliserHibernate ?
 Les classes de l’API JDBC:
CLASSE ROLE
DriverManager Charge et configure le driver de la BD.
Connection Réalise la connexion et l'authentification à la
BD.
PreparedStatement Contient la requête SQL et la transmet à la
BD.
ResultSet Permet de parcourir les informations
retournées par la BD dans le cas d'une
sélection de données
Pourquoi utiliserHibernate ?Pourquoi utiliserHibernate ?
 Tous les SGBD connus sont supportés
 S’intègre parfaitement dans les plus populaires
serveurs d’applications J2EE, ou les
conteneurs Web tel que Tomcat
 Open source et simple à utiliser en définissant
les objets persistés dans un fichier de mapping
XML modifiable
 Remplace les accès à la base de données par
des appels à des méthodes objet de haut
niveau.
Architecture HibernateArchitecture Hibernate
Source: Training guide
1 2 3 4 5 6
Bibliothèques HibernateBibliothèques Hibernate
Architecture HibernateArchitecture Hibernate
Session-factory
Configuration de baseConfiguration de base
 Environnement non
managé (conteneur de
servlets)
Configuration de baseConfiguration de base
Configuration de baseConfiguration de base
 Les étapes pour démarrer Hibernate:
1. Télécharger et décompresser le pilote JDBC
2. Import des librairies nécessaires à l'utilisation
d'hibernate
3. Choisir le pool de connexions JDBC
4. Faire connaître ces propriétés à Configuration
5. Créer une instance de configuration et charger les
fichiers de mapping XML en utilisant addRessource()
6. Générez une SessionFactory à partir de la
Configuration en appelant buildSessionFactory().
Configuration de baseConfiguration de base
 Le code suivant démarre Hibernate:
Configuration de baseConfiguration de base
 Environnement managé
(avec un serveur
d’application
J2EE)
Configuration avancéeConfiguration avancée
 Les différentes propriétés sont:
 Fichier de dépannage
hibernate.show.sql
 Fichier de propriétés
hibernate.properties (voirslide précédent)
 Fichier de configuration
hibernate.cfg.xml
Configuration avancéeConfiguration avancée
Hibernate.cfg.xml
Déclaration de la classe persistanteDéclaration de la classe persistante
 Doit obéir à une
condition : elle doit être
un POJO (Plain
Ordinary Java Object)
 Implémenter un
constructeur sans
argument
 Fournir une propriété
d’identifiant unique
 Elle est mappée dans le
fichier comme extension
Message. Hbm.xml
Le fichierde mappingLe fichierde mapping
 Décrit comment se fera
la persistance des
objets d’une classe
 Se place dans le même
répertoire que la classe
et se nomme
classe.hbm.xml
Stratégie de
génération
D’identifiant
Le fichierde configurationLe fichierde configuration
 Le placer dans le
répertoire source de
l’application, à la racine
de la classe PATH
 Hibernate recherche
automatiquement le
fichier hibernate.cfg.xml
au démarrage.
Etats d’un objetEtats d’un objet
Les associationsLes associations
 Dans le modèle objet:
Références d’objets
Directionnelles
 Dans le modèle
relationnel:
Colonne de clé
étrangère
Pas directionnelles
Les associations 1 to 1Les associations 1 to 1
 Bidirectionnelles
simples:
Les associations 1 to N /N to 1Les associations 1 to N /N to 1
Les associations avec table de jointureLes associations avec table de jointure
Relation d’héritageRelation d’héritage
Relation d’héritageRelation d’héritage
Manipulation des données
Les données sont manipulées à partir d'une
session créée à partir de la sessionFactory:
 Chargement des données : session.load()
 Sauvegarde des données : session.save()
 Chargement des données non sûres :
session.get()
 Suppression des données : session.delete()
 Mise à jour des données : session.update()
Manipulation des données
 Exemple de code:
Manipulation des données
 INSERT INTO PLAYER
VALUES(5,'Henry Louis
Aaron','Hammerin''
Hank','1934-02-05','Mobile,
AL',44)
Manipulation des données
Les types de donnéesLes types de données
Avantages Inconvénients
 Gain de 30 à 40% du nombre de
lignes de certains projets
 Un plus grand nombre
d’optimisations plus faciles à
mener avec cet ORM automatisé.
 Améliore la portabilité du code
pour des changements de SGBD.
 Mise en valeur de la logique
métier.
 Le plus populaire des frameworks
ORM
 Une couche de persistance,
quelle qu'elle soit, a un coût.
 C’est une question de choix
d'architecture et de besoin
 Les procédures stockées sont
peu portable et peu flexible.
Hibernate face à ses concurrentsHibernate face à ses concurrents
 Toplink (WebGain puis Oracle)
 OJB (Apache Object/relational bridge)
 Castor (EXOLAB)
 Cocobase (Thought inc)
 JDO (Datanucleus)
 JPOX 1.2
L’avenird’HibernateL’avenird’Hibernate
 La recherche plein texte
 Sera utilisé dans les plus grands projets Java .
 d'utiliser conjointement les EJB3 et Hibernate
L’avenird’HibernateL’avenird’Hibernate
Liste des utilisateurs HibernateListe des utilisateurs Hibernate
Démonstration 1/23
Démonstration 2/23
Démonstration 3/23
Démonstration 4/23
Démonstration 5/23
 Le développement sera effectué sur la
configuration suivante:
 La plateforme Java 5
 Le serveurde BDMySQL 5.0
 L’EDI Eclipse 3.2
Démonstration 6/23
Démonstration 7/23
Démonstration 8/23
 Implémentation:
 Un nouveau projet Eclipse, nommé «
PetStore Hibernate », est créé.
 Un nouveau schéma MySQL, nommé «
hibernate », est créé.
 l'implémentation de la couche de
persistance contient un nombre réduit de
classes.
Démonstration 9/23
Démonstration 10/23
 Le fichierde configuration
«hibernate.cfg.xml »
contient:
 Les paramètres de
connexion à la source de
données
 La liste des fichiers de
mapping des classes
persistantes
 Le paramètre d’activation
des traces SQL
 La configuration du cache
d’objets
Démonstration 11/23
Démonstration 10/23
 Description de la
méthode :
Démonstration 10/23
 Description de la méthode:
Démonstration 10/23
 Dernière méthode:
Démonstration 10/23
 Ecriture de la requête
HQL :
Démonstration 10/23
 La requête produite,
pourles paramètres «
Query »= «Cats Male
White »et «l »=
Local.UK, est la
suivante :
Démonstration 10/23
 Implémentation de la classe persistante «HibItem»:
Démonstration 10/23
Démonstration 10/23
 Implémentation de la
classe persistante «
HibItemDetail »:
Démonstration 10/23
 Implémentation de la
classe utilitaire:
Démonstration 10/23
 Implémentation de la
classe de conversion:
Démonstration 10/23
 Création du schéma de
base de données:
Démonstration 10/23
 Persistance des autres classes:
BibliographieBibliographie
 Documentation et bibliothèques: http://www.hibernate.org/
 Communauté d’utilisateurs Java à Paris:
http://www.parisjug.org/
 Université Marne la Vallée:
http://www-igm.univ-mlv.fr/~dr/XPOSE2004/msamson/
 «Hibernate », Christian Bauer, Gavin King, CampusPress
(Open Source Reference), 07/2005
 Application démo de Hibernate:
http://caveatemptor.hibernate.org
Les meilleures pratiquesLes meilleures pratiques
 Déclarez des propriétés d'identifiants dans les
classes persistantes
 Ne gérez pas vous même les connexions
JDBC
 Préférez les associations bidirectionnelles
 Placez chaque mapping de classe dans son
propre fichier
Question/Réponse ?Question/Réponse ?
 Quelles sont les plug-
ins indispensables pour
concevoir un projet
Java?
 A quoi sert la classe
configuration?
 Quel est l’utilité de
l’interface Query?
 Le package Hibernate
Core associé au plug-in
Hibernate synchronizer.
 Regroupe les infos de
mapping et d’accès aux
Base de données.
 Pour récupérerles
enregistrements d’une
base répondant à une
requête HQL
Question/Réponse ?Question/Réponse ?
 Où installer les classes
du package Hibernate
Core?
 L’affichage des
requêtes réalisées par
Hibernate peuvent être
activés dans le fichier
de configuration?
 Dans le sous répertoire
WEB-INF/lib de
l’application web.
 Modifier simplement la
valeur de l’attribut de
l’élément <property>
dont l’attribut name vaut
hibernate.show_sql.

Weitere ähnliche Inhalte

Was ist angesagt?

Objet Direct Formation JPA Hibernate
Objet Direct Formation JPA HibernateObjet Direct Formation JPA Hibernate
Objet Direct Formation JPA Hibernateformationobjetdirect
 
Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence APIThibault Cuvillier
 
CDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGICDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGIAntoine Sabot-Durand
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateYouness Boukouchi
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart ClientGuillaume Sauthier
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Ippon
 
JNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory InterfacesJNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory Interfacesbenouini rachid
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingIppon
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
 
Introduction java
Introduction javaIntroduction java
Introduction javaFouad Root
 
L'écosystème Java
L'écosystème JavaL'écosystème Java
L'écosystème Javateejug
 

Was ist angesagt? (20)

Objet Direct Formation JPA Hibernate
Objet Direct Formation JPA HibernateObjet Direct Formation JPA Hibernate
Objet Direct Formation JPA Hibernate
 
Hibernate
HibernateHibernate
Hibernate
 
Presentation JPA
Presentation JPAPresentation JPA
Presentation JPA
 
Introduction à JPA (Java Persistence API )
Introduction à JPA  (Java Persistence API )Introduction à JPA  (Java Persistence API )
Introduction à JPA (Java Persistence API )
 
Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence API
 
CDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGICDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGI
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernate
 
Hibernate
HibernateHibernate
Hibernate
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...
 
JNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory InterfacesJNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory Interfaces
 
Hibernate et jsf
Hibernate et jsfHibernate et jsf
Hibernate et jsf
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
Introduction java
Introduction javaIntroduction java
Introduction java
 
Crs orm
Crs ormCrs orm
Crs orm
 
Devoxx 15
Devoxx 15 Devoxx 15
Devoxx 15
 
L'écosystème Java
L'écosystème JavaL'écosystème Java
L'écosystème Java
 

Andere mochten auch

OBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaOBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaDouglas MBIANDOU
 
Persistance avec JPA
Persistance avec JPAPersistance avec JPA
Persistance avec JPAsimeon
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Saâd Zerhouni
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...Horacio Gonzalez
 
Framework Hibernate
Framework HibernateFramework Hibernate
Framework HibernateInes Ouaz
 
Application Spring MVC/IOC & Hibernate
Application Spring MVC/IOC & HibernateApplication Spring MVC/IOC & Hibernate
Application Spring MVC/IOC & HibernateInes Ouaz
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 

Andere mochten auch (13)

OBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaOBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur java
 
Persistance avec JPA
Persistance avec JPAPersistance avec JPA
Persistance avec JPA
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Ejb3
Ejb3Ejb3
Ejb3
 
Diapo PFE
Diapo PFEDiapo PFE
Diapo PFE
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
 
Ejb 3
Ejb 3Ejb 3
Ejb 3
 
Framework Hibernate
Framework HibernateFramework Hibernate
Framework Hibernate
 
Application Spring MVC/IOC & Hibernate
Application Spring MVC/IOC & HibernateApplication Spring MVC/IOC & Hibernate
Application Spring MVC/IOC & Hibernate
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 

Ähnlich wie Presentation hibernate nfe103

Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPkemenaran
 
Environnements & Développements
Environnements & DéveloppementsEnvironnements & Développements
Environnements & DéveloppementsPaulin CHOUDJA
 
Formation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-dataFormation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-dataLhouceine OUHAMZA
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zinebZineb ELGARRAI
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]linasafaa
 
Java et les bases de données
Java et les bases de donnéesJava et les bases de données
Java et les bases de donnéesGuillaume Harry
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3DublinCore2b
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflineDNG Consulting
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkMSDEVMTL
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Alphorm.com Formation Elastic : Maitriser les fondamentaux
Alphorm.com Formation Elastic : Maitriser les fondamentauxAlphorm.com Formation Elastic : Maitriser les fondamentaux
Alphorm.com Formation Elastic : Maitriser les fondamentauxAlphorm
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebChristophe Rochefolle
 
Sérialisation, Persistance Et Mapping Objet Relationnel
Sérialisation, Persistance Et Mapping Objet RelationnelSérialisation, Persistance Et Mapping Objet Relationnel
Sérialisation, Persistance Et Mapping Objet RelationnelKhalid ALLILI
 
121102 aetc_consultingconf4d
121102 aetc_consultingconf4d121102 aetc_consultingconf4d
121102 aetc_consultingconf4dNathalie Richomme
 

Ähnlich wie Presentation hibernate nfe103 (20)

JPA est middleware
JPA est middleware JPA est middleware
JPA est middleware
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Environnements & Développements
Environnements & DéveloppementsEnvironnements & Développements
Environnements & Développements
 
Formation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-dataFormation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-data
 
Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zineb
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
 
Java et les bases de données
Java et les bases de donnéesJava et les bases de données
Java et les bases de données
 
575
575575
575
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Alphorm.com Formation Elastic : Maitriser les fondamentaux
Alphorm.com Formation Elastic : Maitriser les fondamentauxAlphorm.com Formation Elastic : Maitriser les fondamentaux
Alphorm.com Formation Elastic : Maitriser les fondamentaux
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
Sérialisation, Persistance Et Mapping Objet Relationnel
Sérialisation, Persistance Et Mapping Objet RelationnelSérialisation, Persistance Et Mapping Objet Relationnel
Sérialisation, Persistance Et Mapping Objet Relationnel
 
121102 aetc_consultingconf4d
121102 aetc_consultingconf4d121102 aetc_consultingconf4d
121102 aetc_consultingconf4d
 

Mehr von MRamo2s

Competitivite parqualite_emmanuelcombe
 Competitivite parqualite_emmanuelcombe Competitivite parqualite_emmanuelcombe
Competitivite parqualite_emmanuelcombeMRamo2s
 
Les nouveaux usages de la télévision connectée
Les nouveaux usages de la télévision connectéeLes nouveaux usages de la télévision connectée
Les nouveaux usages de la télévision connectéeMRamo2s
 
Tableau de-bord avec excel
Tableau de-bord avec excelTableau de-bord avec excel
Tableau de-bord avec excelMRamo2s
 
AECEM Whitepaper about E-Commerce.
AECEM Whitepaper about E-Commerce.AECEM Whitepaper about E-Commerce.
AECEM Whitepaper about E-Commerce.MRamo2s
 
Rapport de veille final groupe3 (26 01-14h37)
Rapport de veille final groupe3 (26 01-14h37)Rapport de veille final groupe3 (26 01-14h37)
Rapport de veille final groupe3 (26 01-14h37)MRamo2s
 
Super kebab nfe103
Super kebab nfe103Super kebab nfe103
Super kebab nfe103MRamo2s
 
Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008MRamo2s
 
Tennis Evolution cce105_communication_2008
Tennis Evolution cce105_communication_2008Tennis Evolution cce105_communication_2008
Tennis Evolution cce105_communication_2008MRamo2s
 
Centres sportifs nfe103
Centres sportifs nfe103Centres sportifs nfe103
Centres sportifs nfe103MRamo2s
 
E-commerce Use case NFE102
E-commerce Use case NFE102E-commerce Use case NFE102
E-commerce Use case NFE102MRamo2s
 
Work placement bachelor's degree computer science_2009
Work placement bachelor's degree computer science_2009Work placement bachelor's degree computer science_2009
Work placement bachelor's degree computer science_2009MRamo2s
 

Mehr von MRamo2s (11)

Competitivite parqualite_emmanuelcombe
 Competitivite parqualite_emmanuelcombe Competitivite parqualite_emmanuelcombe
Competitivite parqualite_emmanuelcombe
 
Les nouveaux usages de la télévision connectée
Les nouveaux usages de la télévision connectéeLes nouveaux usages de la télévision connectée
Les nouveaux usages de la télévision connectée
 
Tableau de-bord avec excel
Tableau de-bord avec excelTableau de-bord avec excel
Tableau de-bord avec excel
 
AECEM Whitepaper about E-Commerce.
AECEM Whitepaper about E-Commerce.AECEM Whitepaper about E-Commerce.
AECEM Whitepaper about E-Commerce.
 
Rapport de veille final groupe3 (26 01-14h37)
Rapport de veille final groupe3 (26 01-14h37)Rapport de veille final groupe3 (26 01-14h37)
Rapport de veille final groupe3 (26 01-14h37)
 
Super kebab nfe103
Super kebab nfe103Super kebab nfe103
Super kebab nfe103
 
Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008
 
Tennis Evolution cce105_communication_2008
Tennis Evolution cce105_communication_2008Tennis Evolution cce105_communication_2008
Tennis Evolution cce105_communication_2008
 
Centres sportifs nfe103
Centres sportifs nfe103Centres sportifs nfe103
Centres sportifs nfe103
 
E-commerce Use case NFE102
E-commerce Use case NFE102E-commerce Use case NFE102
E-commerce Use case NFE102
 
Work placement bachelor's degree computer science_2009
Work placement bachelor's degree computer science_2009Work placement bachelor's degree computer science_2009
Work placement bachelor's degree computer science_2009
 

Presentation hibernate nfe103

Hinweis der Redaktion

  1. Je me réfère aux spécifications de la persistance.
  2. Hibernate Annotations et EntityManager &gt;&gt; EJB3 . Hibernate Tools &gt;&gt;Génère les classes de mapping à partir de la base de données. Offre un outil appelé « console Hibernate ». Hibernate extensions &gt;&gt;Livre CodeGenerator pour créer le fichier de mapping. Conclusion:
  3. Chaque session factory contient les infos pour obtenir une connexion à la base (le driver JDBC, adresse URL), le dialecte SQL(Oracle, DB2,……)et d’autres informations. Hibernate affiche sur la console les requêtes SQL lancées&gt;&gt;&gt;&gt;la valeur de show_sql est porté à true.
  4. Table par hiérarchie: 1 seule table. Table par classe fille: 3 tables. Table par classe concrète: 2 tables.
  5. La SessionFactory est créée à partir d&apos;une configuration de l&apos;objet, et comme son nom l&apos;indique il s&apos;agit d&apos;une usine pour la session objets.
  6. Pour créer et persister un objet ‘BallPlayer’ dans la table ‘Player’ utilisant un API Hibernate, voir le code ci-dessus.
  7. Code pour lire, ou pour créer un objet BallPlayer à partir de l’état persistant stocké dans une base de données est similaire.
  8. Le type est une caractéristique puissante et fondamentale d’Hibernate. Il y’a des types primitifs, les types de mapping de date et heure (java.util), les types de mapping grands objets (binary, text, serializable, clob et blob). Il est possible de personnaliser les types par l’utilisateur . Les interfaces UserType et CompositeUserType sont proposées afin de vous permettre d’ajouter vos propres types .
  9. 1) Imaginez que vous recherchez la référence d’un contrat dans votre système commercial. Vous vous souvenez juste qu’il s’agit d’une étude de portails. Vous tapez &quot;étude portail&quot; dans la barre de recherche sur la page d’accueil de votre application et vous avez comme premier résultat la mission que vous cherchiez : &quot;Étude comparative de portails&quot;. Les usages ont changé et les besoins techniques sont apparus : Pouvoir indexer les contenus métiers dans des moteurs de recherche plein texte et pouvoir les requêter simplement. 3) Depuis Hibernate 3 2, Hibernate est compatible avec la spécification JPA. Hibernate est proposée comme implémentation JPA pour les serveurs d&apos;applications JBoss et JOnAS. Le serveur d&apos;application GlassFish, implémentation de référence JAVA EE 5, donc d&apos;EJB 3, propose Toplink par défaut comme implémentation de JPA(4), maîs on aurait pu imaginer un choix alternatif : Hibernate ou encore OpenJPA (Apache).
  10. Imaginez que vous recherchez la référence d’un contrat dans votre système commercial. Vous vous souvenez juste qu’il s’agit d’une étude de portails. Vous tapez &quot;étude portail&quot; dans la barre de recherche sur la page d’accueil de votre application et vous avez comme premier résultat la mission que vous cherchiez : &quot;Étude comparative de portails&quot;.
  11. La couche de persistance de cette application fait appel à deux couches: La couche de service implémentée par la classe « CatalogueEJB ». Ce composant « EJB Session stateless » contient les règles métiers. - La couche d’accès aux données met en œuvre un modèle de conception (design pattern) « DAO ». Conclusion: Cette architecture permet de séparer le modèle de données du mécanisme de persistance.
  12. Nous allons nous intéresser à la couche d’accès aux données. Le modèle représente le diagramme de classe d&apos;un sous-ensemble de la couche de persistance de PetStore
  13. L&apos;étude va présenter le développement de 3 nouvelles stratégies d&apos;accès aux données mettant en oeuvre le framework Hibernate . Le développement d&apos;une nouvelle stratégie va consister à concevoir et implémenter une classe d&apos;accès aux données , implémentant l&apos;interface « CatalogDAO », une liste de classes persistantes et un ensemble de fichiers de mapping ou d&apos;annotations. Les trois nouvelles classes , implémentant l&apos;interface « CatalogDAO » posséderont les méthodes d&apos;accès suivantes.
  14. La classe « HibernateCatalogDAO », implémentant l&apos;interface « CatalogueDAO », aura la charge d&apos;accéder aux services de persistance d&apos;Hibernate et de retourner les données sauvegardées en base de données, dans des objets du modèle de « PetStore ».
  15. La méthode « getCategory ».
  16. 1. La méthode « currentSession( ) » de la classe « HibernateUtil » retourne la session Hibernate du thread courant. 2. Un objet « Transaction » est créé. 3. L&apos;objet persistant « HibCategory », dont l&apos;identifiant correspond au paramètre « categoryID », est retrouvé en appelant simplement la méthode « load » de l&apos;objet « session ». Cet appel lance l&apos;exécution d&apos;une série de requêtes SQL pour retrouver l&apos;état de l&apos;objet « category », créée et initialise une nouvelle instance de la classe « HibCategory », puis, place l&apos;objet reconstruit dans le système de cache. 4. L&apos;objet « HibCategory » est converti en objet du modèle de données « Category ». 5. La transaction est « commitée » bien qu&apos;aucune donnée n&apos;ait été mise à jour. Les 3 méthodes de recherche de liste d&apos;objets sont également construites sur le même modèle. L&apos;implémentation de la méthode « getItems » est la suivante :
  17. 1. La requête doit retourner des objets de type « HibItem » :  « from HibItem as i where ... » 2. Les objets « HibItem », dont la description contient l&apos;un des mots passés en paramètre, doivent être retournés :  « lower(i.details[&apos; » + localeStr + « &apos;].description) like &apos;% » + token + « %&apos; » 3. Les objets « HibItem », dont le nom du produit contient l&apos;un des mots passés en paramètre, doivent être retournés :  « lower(i.product.details[&apos; » + localeStr + « &apos;].name) like &apos;% » + token + « %&apos; » -------------------------------------------------------------------------------------------------------------------------------------------------------------------- Cette requête complexe met en oeuvre les caractérises de HQL suivantes : · navigation au travers d&apos;une hiérarchie d&apos;objets persistants, · accès aux données d&apos;une table de hachage, · opérations sur les chaînes de caractères (lower, like). Une fois la requête générée, son exécution s&apos;effectue comme nous l&apos;avons vu dans le paragraphe précédent. ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Remarque : Dans un souci de lisibilité, l&apos;extrait de code précédent construit la requête HQL en concaténant un grand nombre de chaînes de caractères à la variable « queryStr ». Dans une implémentation réelle, un objet de type « StringBuffer » aurait été utilisée.
  18. Les classes « HibCategory », « HibProduct » et « HibItem » sont construites sur le même modèle. Nous allons examiner l&apos;implémentation de la classe HibItem dans ce paragraphe. La classe « HibItem » est un simple composant JavaBean possédant un constructeur par défaut et des accesseurs pour chacun de ses attributs.
  19. Le fichier de description Hibernate.
  20. Les classes « HibCategoryDetail », « HibProductDetail » et « HibItemDetail » sont construites sur le même modèle. Nous allons examiner l&apos;implémentation de la classe « HibItemDetail » dans ce paragraphe. Elle contient les informations localisées de la classe « HibItem ». Comme « HibItem », la classe « HibItemDetail » est un simple composant JavaBean possédant un constructeur par défaut et des accesseurs pour chacun de ses attributs. Son fichier de description Hibernate est le suivant ci dessous :
  21. La classe « HibernateUtil » permet de : · charger le fichier de configuration d&apos;Hibernate et d&apos;initialiser le singleton sessionFactory, · retourner l&apos;objet de type « Session » associé au thread courant, · libérer l&apos;objet de type « Session ».
  22. Le rôle de la classe « Converter » est de créer des objets du modèle à partir des objets persistants Hibernate. L&apos;objectif est de découpler ces deux ensembles d&apos;objets afin de limiter les modifications à apporter au projet en cas d&apos;évolution de l&apos;une de ces deux parties. Le code source de la méthode de conversion d&apos;un objet de type « HibItem », par exemple, est le suivant :
  23. Le fichier de configuration d&apos;Hibernate value la propriété « hibernate.hbm2ddl.auto » à « update ». Cela indique à Hibernate de mettre à jour le schéma de la base de données à chaque exécution . Lors de la première utilisation de la couche de persistance Hibernate, le schéma suivant est créé : L&apos;absence de table associée à la classe « HibCategoryDetail » et la diversité des noms sont dues aux différents types de mapping utilisés. Nous allons les voir plus en détail :
  24. 1) Liste des bibliothèques à télécharger: Core , Annotations pour les EJB3 , Tools pour générer les classes de mapping à partir de la base de données et Entity Manager .
  25. Hibernate rend les propriétés d&apos;identifiants optionnelles. Il existe beaucoup de raisons pour lesquelles vous devriez les utiliser. Nous recommandons que vous utilisiez des identifiants techniques (générés, et sans connotation métier). Hibernate laisse l&apos;application gérer les connexions JDBC. Vous ne devriez gérer vos connexions qu&apos;en dernier recours. Si vous ne pouvez pas utiliser les systèmes de connexions livrés, réfléchissez à l&apos;idée de fournir votre propre implémentation de org.hibernate.connection.ConnectionProvider . Les associations unidirectionnelles sont plus difficiles à questionner. Dans une grande application, la plupart des associations devraient être navigables dans les deux directions dans les requêtes. Cela prend tout son sens lors d&apos;un travail en équipe.
  26. 2) La valeur vaut true.