Tutoriel Hibernate N°1 : Installation et analyse

////Tutoriel Hibernate N°1 : Installation et analyse

Téléchargez et analysez le module hibernate core (version 3.3.2). Comprenez les librairies nécessaires à Hibernate pour synchroniser vos objets en mémoire et vos enregistrements en base de données. Découvrez la documentation hibernate. Comprenez les autres modules d’hibernate ainsi que le lien entre hibernate, JPA et EJB3.])

Objis, spécialiste de la formation Java, est heureux de vous offrir ce
tutoriel, extrait de séances pratiques de la formation HIBERNATE 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

Prérequis, outils et versions

 aucun

Liens utiles

 + de 100 tutoriaux java/jee Objis

 Tutoriaux HIBERNATE Objis

 Objis, spécialiste formation java depuis 2005

 Site hibernate

 JAVADOC Hibernate core 4.1.6

 FAQ hibernate

 Spécifications EJB3 (JSR-220)

Objectifs

 Maîtriser l’installation d’Hibernate Core

 Comprendre les modules d’hibernate : Annotations, Entitymanager, Tools…

 Analysez les librairies obligatoires et facultatives d’hibernate.

 Comprendre la relation entre Hibernate, JPA et EJB3

Programme

 Partie 1 : définition et historique

 Partie 2 : Avantages clés

 Partie 3 : téléchargement

 Partie 4 : analyse

Durée

 40 min.

Qui sommes-nous ?

presentation-objis-conseil-formation-java-soa2.png

Partie 1 : définition & historique

Hibernate est un framework de mapping Objet/Relationnel pour applications JAVA (et .NET avec Nhibernate). Supporté par Jboss/RedHat Hibernate vous permet de créer une couche d’accès aux données (DAO) plus modulaire, plus maintenable, plus performante qu’une couche d’accès aux données ‘classique’ reposant sur l’API JDBC ( Voir notre Tutoriel Java N°5 : accès aux données avec API JDBC4 et java 6).


La promesse d’hibernate : libérer le développeur de 95% des taches de programmation classique d’une couche d’accès aux données via JDBC
.

slide_objis_definition_historique_hibernate.png

Voici quelques atouts d’une implémentation de votre couche d’accès aux données avec hibernate par rapport à du ‘jdbc pur’

Partie 2 : avantages

Avantage1 : hibernate génère le code SQL pour vous.

— Pas de requête SQL à écrire

— Pas d’Objet ResultSet à gérer : cycle récupération manuelle ResultSet + Casting de chaque ligne du resultset (type Object) vers un type d’objet métier (Ex : Employe)

— Application plus portable. S’adapte à la base de données cible

Avantage 2 : persistance transparente.

Vous pouvez faire de vos classes métiers des classes persistantes sans ajout de code tiers. C’est là une différence forte et fondamentale vis à vis de EJB2.x qui étaient utilisées dans les années de création d’Hibernate.

Cette différence n’est plus d’actualité avec les EJB3, dont les Spécifications(JSR-220) ont été écrite avec la collaboration de Gavin King et l’équipe d’Hibernate.

Avantage 3 : récupération de données optimisée.

Hibernate fournit plusieurs stratégies pour interroger la base de données. Requête SQL, langage HQL ou Api Criteria, avec des options de fetching et de mise en cache sophistiquées.

Avantage 4 : portabilité du code si changement de base de données.

Hibernate vous permet de changer de base de données cible (ex : remplacer SQL Server par PostGresql) en modifiant un minimum de paramètres de configuration (comme le Dialect).

Quand on sait que de nombreux programme codent ‘en dur’ des requêtes SQL dans le code, celui ci est souvent spécifique à une base de données…

Partie 3 : hibernate ou JPA/EJB3 Entity ?

Hibernate est un produit. JPA est une spécification. EJB3 Entity est une implémentation de la spécification JPA.

S’il est vrai que la valeur ajoutée d’hibernate a diminué avec l’avènement de la spécification JPA et son implémentation EJB3 Entity, notez qu’hibernate reste un choix privilégié pour les développeurs qui :

 n’accordent pas une priorité à la portabilité de leur développement

 souhaitent profiter des dernières fonctionnalités, non présentes dans spécifications (qui prennent beaucoup de temps à être validées dans le cadre de la Java Community Process).

Notez qu’il est possible de rendre Hibernate compatible avec la norme JPA, en combinant les modules Hibernate core, Hibernate Annotations et Hibernate EntityManager.

hib_main_module-2.png

Hibernate devient alors un véritable fournisseur JPA, au même titre que ses concurrents EJB3 Entity ou encore Toplink Essentials.

Partie 4: Téléchargement

 Allez sur le site du projet : http://www.hibernate.org

hib_home_page-2.png

Le menu de gauche présente les différents ‘modules’ d’hibernate .

— Hibernate ORM : module principal pour le mapping Objet / Relationnel

— Hibernate Shards : mapping avec données réparties multibases

— Hibernate Search : moteur de recherche texte

— Hibernate Tools : boîte à outils du développeur Hibernate (version Eclipse ou ANT)

— Hibernate Validator : implémentation de JSR 303: Bean Validation

— Hibernate Metamodel Generator : permet la création de méta-model pour des classes annotées avec JPA 2 afin de pouvoir faire des requêtes criteria fortement typés

— Hibernate OGM : permet le mapping entre objets et base NoSQL

2 JSR (Java Spécification Request) sont implémentées:

— JSR 220 : implémentation de la norme EJB3

— JSR 317 : implémentation de la norme JPA

Le cœur d’Hibernate est le module Hibernate ORM. C’est celui que nous allons télécharger et analyser dans ce tutoriel. La plupart des autres modules ont besoin de celui-ci.

 Cliquez sur le lien Download en dessous de Getting Started.
L’écran suivant apparaît:

hib_download_1-2.png

Vous pouvez voir sur cette page qu’Hibernate est téléchargeable soit sous forme de package (bundle) soit via l’outil Maven.

Vous pouvez vous former sur cet outil grâce à nos tutoriaux Maven ou bien en vous inscrivant notre formation Maven de 3 jours.

Dans ce tutoriel nous préférons le téléchargement sous forme de package.

 Cliquez sur release bundles. L’écran suivant apparaît:

hib_download_2-2.png

Vous pouvez y télécharger la dernière version d’Hibernate.

Dans ce tutoriel nous utilisons la version 3.3.2.GA.

 Cliquez sur Parent folder puis hibernate3 puis 3.3.2.GA. L’écran suivant apparaît:

hib_download_3-2.png

Cliquez sur le lien correspondant à votre environnement. Par exemple si vous êtes sous windows cliquez sur hibernate-distribution-3.3.2.GA-dist.zip.

Le téléchargement commence

tutoriel1_hibernate_objis_installation_5.png

tutoriel1_hibernate_objis_installation_6.png

Partie 5: Analyse

 Dézippez l’archive dans le répertoire c:formationhibernate

tutoriel1_hibernate_objis_installation_7.png

Observez la librairie principale d’hibernate : hibernate3.jar

Remarquez les 3 répertoires présents :

— Répertoire documentation (doc html/pdf multilingue)

— Répertoire project (source)

— Répertoire lib : librairies complémentaires

Répertoire documentation

tutoriel1_hibernate_objis_installation_11.png

Répertoire lib

Le jar hibernate3.jar présent à la racine du zip ne se suffit pas à lui-même. Hibernate a besoin d’autres librairies/jars

Librairies obligatoires

 Analysez le contenu du répertoire lib/required

tutoriel1_hibernate_objis_installation_8.png

Voici le rôle de chaque librairie :

— antlr-2.7.6.jar : ANother Tool for Language Recognition est un outil qui permet de développer un langage maison avec une grammaire capable de le reconnaître. Utilisé pour créer langage HQL (Hibernate Query Language) d’interrogation d’Objets. (+ d’infos)

— commons-collections-3.1.jar : Les Commons Collections sont des extensions développées par la fondation Apache (Jakarta) pour compléter le framework Collections du JDK de Sun (+ d’infos).

— dom4j-1.6.1.jar : dom4j est une API Open Source Java permettant de travailler avec XML, XPath et XSLT. + d’infos

— javassist-3.9.0.GA.jar : JavaAssist est une API de manipulation de bytecode (fichier .class), dans un contexte de réflexion + d’infos, càd de modification du contenu d’une classe en phase d’exécution.

— jta-1.1.jar : Implémentation de référence de l’API Sun JTA.[+ d’infos->]

— slf4j-api-1.5.8.jar : + d’infos

ATTENTION : vous devrez également ajouter une des librairies d’implémentation de SL4J (par exemple slf4j-simple.jar ou sl4j-logj12.jar) complémentaire du jar slf4j-api.jar sinon vous obtiendrez une exception NoClassDefFoundException : Failed to load class org.slf4j.impl.StaticLoggerBinder

Librairies optionelles

 Analysez le contenu du répertoire lib/optional

tutoriel1_hibernate_objis_installation_9.png

2 catégories de librairies optionelles:

 Librairies liées à une stratégie d’implémentation de pool de connexion :

— C3p0 (c3p0-0.9.1.jar)

— proxool (proxool-0.8.3.jar)

 Librairies liées à une stratégie d’implémentation de Cache de niveau 2 : choix entre :

— Ehcache (ehcache-1.2.3.jar)

— JbossCache (jboss-cache-1.4.1.GA.jar ou jbosscache-core-3.1.0.GA.jar ou ) : cache transactionnel

— Oscache (oscache-2.1.jar)

— Swarmcache (swarmcache-1.0RC2.jar) : cache transactionnel

Librairies de manipulation de bytecode

 CGLIB (cglib-2.2.jar) : Code Generation LIBrary

 

Répertoire project

Ici vous trouvez les sources d’Hibernate core, qui est un projet Maven.

tutoriel1_hibernate_objis_installation_12.png

Si Maven 2 est correctement installé, vous pouvez créer une distribution hibernate via la commande mvn install, lancée à partir du répertoire project.

Conclusion

Dans ce tutoriel, vous avez pratiqué le téléchargement et l’analyse du module core du framework de mapping objet/Relationnel Hibernate.

2018-01-30T08:50:25+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java