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
aucun
+ de 100 tutoriaux java/jee Objis
Tutoriaux HIBERNATE Objis
Objis, spécialiste formation java depuis 2005
Site hibernate
JAVADOC Hibernate core 3.2.2
FAQ hibernate
Spécifications EJB3 (JSR-220)
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
Partie 1 : définition et historique
Partie 2 : Avantages clés
Partie 3 : téléchargement
Partie 4 : analyse
40 min.
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.

Voici quelques atouts d’une implémentation de votre couche d’accès aux données avec hibernate par rapport à du ’jdbc pur’
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...
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.

Hibernate devient alors un véritable fournisseur JPA, au même titre que ses concurrents EJB3 Entity ou encore Toplink Essentials.
Allez sur le site du projet : http://www.hibernate.org

Le menu de gauche présente les différents ’modules’ d’hibernate .
— Hibernate core : mapping Objet / Relationnel réalisé via fichier XML
— Hibernate Annotations : Mapping réalisé directement dans classe Java via @nnotations
— Hibernate EntityManager : permet la compatibilité d’hibernate avec JPA
— Hibernate Validator : implémentation de JSR 303 : Bean Validation
— Hibernate search : moteur de recherche texte
— Hibernate Shards : mapping avec données réparties multibases
— Hibernate Tools : boîte à outils du développeur Hibernate (version Eclipse ou ANT)
Le module au cœur d’Hibernate est le module Hibernate Core. 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 Hibernate core sur le menu de gauche. L’écran suivant apparaît.

Vous découvrez l’équipe de développement d’hibernate : le chef de projet et les contributeurs (dont Gavin King le créateur d’Hibernate), ainsi que des informations et un lien sur la dernière livraison (release) : date, numéro.
REMARQUE : Notez également les liens ’ChangeLog’ et’RoadMap’ vous permettant d’en savoir plus sur la valeur ajoutée de cette release par rapport aux précédentes (Changelog) ainsi que les perspectives pour la prochaine release (RoadMap). Ici la release 3.3.2GA (Generaly Avalaible) a été livrée le 11 septembre 2008.
REMARQUE : le PDF datasheet présente les caractéristiques d’Hibernate, dans une approche commerciale. Notez que Hibernate est désormais (depuis 2005) un produit Jboss/RedHat.
Cliquez sur ’Latest Release’ ici 3.3.2GA
L’écran suivant apparaît.
Cliquez sur le lien ’download’ correspondant au module hibernate Core
L’écran suivant apparaît.

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


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

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

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

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

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
Javassist->] (javassist-3.9.0.GA.jar) :

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

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.
Dans ce tutoriel, vous avez pratiqué le téléchargement et l’analyse du module core du framework de mapping objet/Relationnel Hibernate.
Le chemin le plus court pour avoir les réflexes et la méthodologie du bon développeur Hibernate :
Si vous appréciez notre sens du partage, devenez gratuitement membre ’classic’ du Club Objis :
Votez pour les prochains tutoriaux à publier
Préparez vos entretiens techniques
Valorisez votre profil / expertise
Identifiez des opportunités d’emploi
Recevez la newsletter objis.com