3.5. Tracer

Hibernate utilizes Simple Logging Facade for Java (SLF4J) in order to log various system events. SLF4J can direct your logging output to several logging frameworks (NOP, Simple, log4j version 1.2, JDK 1.4 logging, JCL or logback) depending on your chosen binding. In order to setup logging properly you will need slf4j-api.jar in your classpath together with the jar file for your preferred binding - slf4j-log4j12.jar in the case of Log4J. See the SLF4J documentation for more detail. To use Log4j you will also need to place a log4j.properties file in your classpath, an example properties file is distributed with Hibernate in the src/ directory.

Nous vous recommandons fortement de vous familiariser avec les messages des traces d'Hibernate. Beaucoup de soins a été apporté pour donner le plus de détails possible sans les rendre illisibles. C'est un outil essentiel en cas de soucis. Les catégories de trace les plus intéressantes sont les suivantes :

Tableau 3.9. Catégories de trace d'Hibernate

Catégorie Fonction
org.hibernate.SQL Trace toutes les requêts SQL de type DML (gestion des données) qui sont exécutées
org.hibernate.type Trace tous les paramètres JDBC
org.hibernate.tool.hbm2ddl Trace toutes les requêts SQL de type DDL (gestion de la structure de la base) qui sont exécutées
org.hibernate.pretty Trace l'état de toutes les entités (20 entités maximum) qui sont associées avec la session hibernate au moment du flush
org.hibernate.cache Trace toute l'activité du cache de second niveau
org.hibernate.transaction Trace toute l'activité relative aux transactions
org.hibernate.jdbc Trace toute acquisition de ressource JDBC
org.hibernate.hql.ast.AST Trace l'arbre syntaxique des requêtes HQL et SQL durant l'analyse syntaxique des requêtes
org.hibernate.secure Trace toutes les demandes d'autorisation JAAS
org.hibernate Trace tout (beaucoupe d'informations, mais très utile pour résoudre les problèmes).

Lorsque vous développez des applications avec Hibernate, vous devriez quasiment toujours travailler avec le niveau debug activé pour la catégorie org.hibernate.SQL, ou sinon avec la propriété hibernate.show_sql activée.