Tutoriel Hibernate N°3 : analyse logs hibernate

////Tutoriel Hibernate N°3 : analyse logs hibernate

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)

tutoriel-hibernate-objis-analyse-logs-1

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 ?

tutoriel-hibernate-objis-analyse-logs-2

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

tutoriel-hibernate-objis-analyse-logs-3

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

tutoriel-hibernate-objis-analyse-logs--4bis

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é :

tutoriel-hibernate-objis-analyse-logs-6

A ce stade du programme, le schéma de la base de données a été créé :

tutoriel-hibernate-objis-analyse-logs-5

En particulier, les tables correspondant au domaine métier sont générés

Partie 5 : Reqûetes

tutoriel-hibernate-objis-analyse-logs-4

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)
tutoriel-hibernate-objis-analyse-logs-4

 Ajouter à la racine de src un fichier log4j.properties comme celui-ci

sl4j-architecture-dynamic

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.

2018-01-27T16:39:29+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java