vers l'accueil formulaire de contact

Tutoriel Hibernate N°1 : Installation et analyse

Votre formation HIBERNATE avec Objis, spécialiste formation java depuis 2005Té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 3.2.2
- 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.

PUBLICITE

PNG - 7.8 ko

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.

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.

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

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

Partie 5 : Analyse

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

Conclusion

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

Prochaine formation HIBERNATE

Le chemin le plus court pour avoir les réflexes et la méthodologie du bon développeur Hibernate :

Votre formation HIBERNATE avec Objis, spécialiste formation java depuis 2005

Pour aller plus loin : le réseau Objis

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