Déchiffrez les traces logs générés par Hibernate. Comprenez les étapes clés au démarrage, ainsi que les options de configuration par défaut d’hibernate. Modifiez certaines configurations et analysez l’impact.
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
Tutoriel Hibernate N°2 : votre première application hibernate
Liens utiles
+ de 100 tutoriaux java/jee Objis
Tutoriaux HIBERNATE Objis
Objis, spécialiste formation java depuis 2005
Site hibernate (javadoc, FAQ)
Documentation (chap. 10) : working with objects
Objectifs
Comprendre les logs générés par Hibernate
Analysez certaines configurations par défaut.
Programme
Introduction & Logs à analyser
Partie 1 : Config. hibernate et binding
Partie 2 : Connexion à la base
Partie 3 : Configuration SessionFactory
Partie 4 : ShemaExport & création tables
Partie 5 : Reqûetes
Partie 6 : mise en œuvre Log4j
Durée
30 min.
Introduction & Logs à analyser
Ci-dessous le fichier de logs suite au Tutoriel Hibernate N°2 : votre première application hibernate.
Logs application DemoHibernate
L’objectif de ce tutoriel est de mieux comprendre le contenu de ce fichier ainsi que certaines options de configurations associées.
Partie 1 : Config. hibernate et binding
Fichiers de configuration
Dans un premier temps, le programme recherche les fichiers de configuration Hibernate : d’abord hibernate.properties, en ensuite hibernate.cfg.xml (dont les valeurs surchargent celles de hibernate.properties)
ici
— le fichier hibernate.properties n’a pas été trouvé dans le classpath de l’application (ligne 2).
— le fichier hibernate.cfg.xml a bien été identifié (lignes 5 et 6)
Binding Objet / Table
Juste après avoir trouvé le fichier hibernate.cfg.xml , hibernate s’assure de la validité de la configuration statique de la persistence des objets métiers déclarés dans ce fichier.
ici :
— Hibernate trouve une ligne associée à la déclaration du mapping de la classe Formation vers la table FORMATIONS (ligne 7)
— Hibernate réalise un binding entre l’Objet métier Formation et la table FORMATIONS. Ce qui valide que la configuration du mapping est valable (ligne 8).
SessionFactory sous JNDI
Hibernate essai d’identifier la stratégie de configuration de la SessionFactory : d’abord via Objet dans un annuaire JNDI, ensuite via configuration hibernate (dans hibernate.hbm.xml).
ici :
— Hibernate n’est pas configurée dans un annuaire JNDI (ligne 9)
Partie 2 : Connexion à la base
Comment est réalisée la connexion à la base ?
ici :
— Avec un pool de connexion interne à ne pas garder si vous déployez en prod. En effet vous notez le texte : (not for production use!) (ligne 10)
— La taille du pool de connexion est de 1 connexion (ligne 11)
— L’autocommit est à False, ce qui oblige à passer par un commit() pour valider une requête en base. Par défaut sous JDBC l’autocommit vaut true. (ligne 12)
— Information sur le driver utilisé ainsi que l’URL de connexion de la base de données. (ligne 13)
— Lecture du login et mot de passe (pas d’affichage en clair). (ligne 14)
Partie 3 : Configuration SessionFactory
Dialect
Identification de la base de données et driver , ici HSQL DB (ligne 15, 16)
HIdentification du Dialect à utiliser. Ici HSQLDialect (ligne 17)
Stratégie transactionelle
Utilisation de la stratégie transactionelle par défaut « Using default Transaction Strategy (direct JDBC Access) » (ligne 18), et non d’une stratégie basée sur JTA (Java Transaction Architecture) (ligne 19).
Paramétrage
Ensuite une longue liste de paramètres par défaut, dont certains sont des paramètres systèmes, et modifiable via « java -jar -Dcle=valeur ».
Ligne 20 : » automatic flush during beforeCompletion() disabled » : n’autorise pas de faire un flush automatique dans le cadre d’appel de la méthode callback beforeCompletion() de JTA.
Ligne 21 : » Automatic session close at end of transaction: disabled » : n’autorise pas de fermer la session automatiquement à la fin d’une transaction.
AUTRES PARAMETRES EXPLIQUES LORS DE LA FORMATION HIBERNATE
Partie 4 : ShémaExport & création tables
Ces quelques lignes et toutes les précédentes représentent l’éxécution de la ligne de code : Session session = HibernateUtil.getSessionFactory().openSession();
Voici par exemple les caractéristiques de l’Objet Session récupéré :
A ce stade du programme, le schéma de la base de données a été créé :
En particulier, les tables correspondant au domaine métier sont générés
Partie 5 : Reqûetes
Partie 6 : Mise en oeuvre de Log4j
Pour une analys plus fine du fonctionnement d’hibernate, l’interface simple de SL4J ne suffit plus. Nous allons profiter de l souplesse de Log4j.
Supprimez le jar sl4j-simple.jar
Ajouter à la place 2 jars : log4j.jar (extrait de log4j-1.2.15.zip à télécharger) et slf4j-log4j12-1.5.11.jar (extrait de sl4j-1.5.8.zip à télécharger)
Ajouter à la racine de src un fichier log4j.properties comme celui-ci
Puis lancez-à nouveau l’application.
QUESTIONS :
— Quelles traces apparaissent ?
— Expliquez le contenu du fichier log4j.properties.
— Comment faire pour avoir plus de traces ?
— Comment faire pour envoyer ces traces dans un fichier ? Dans un tableau HTML ? Par mail ?
Conclusion
Dans ce tutoriel, vous avez analysé les logs d’hibernate générés dans le cadre du Tutoriel Hibernate N°2 : votre première application hibernate.