Comment afficher les valeurs de paramètre hibernate sql - Log4j

Comment afficher les valeurs des paramètres sql hibernate - Log4j

Problème

Hibernate a une fonction de journalisation de base pour afficher l'instruction générée SQL avec la propriété de configurationshow_sql.

Hibernate: INSERT INTO example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
VALUES (?, ?, ?, ?, ?, ?)

Cependant, cela ne suffit pas pour le débogage, les valeurs des paramètres Hibernate SQL sont manquantes.

Solution - Log4j

Log4J est requis pour afficher la valeur réelle du paramètre Hibernate SQL.

1. Configurer Log4j dans Hibernate

Suivez cet article pourconfigure Log4j in Hibernate

2. Modifier le niveau de journalisation

Modifiez le fichier de propriétés Log4j et changez le niveau de journalisation en «debug» ou «trace» dans la propriété «log4j.logger.org.hibernate.type».

Fichier: log4j.properties

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Root logger option
log4j.rootLogger=INFO, stdout

# Hibernate logging options (INFO only shows startup messages)
log4j.logger.org.hibernate=INFO

# Log JDBC bind parameter runtime arguments
log4j.logger.org.hibernate.type=trace

3. Done

Les valeurs réelles des paramètres Hibernate s'affichent maintenant

Production…

Hibernate: INSERT INTO example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME)
VALUES (?, ?, ?, ?, ?, ?)
13:33:07,253 DEBUG FloatType:133 - binding '10.0' to parameter: 1
13:33:07,253 DEBUG FloatType:133 - binding '1.1' to parameter: 2
13:33:07,253 DEBUG DateType:133 - binding '30 December 2009' to parameter: 3
13:33:07,269 DEBUG FloatType:133 - binding '1.2' to parameter: 4
13:33:07,269 DEBUG IntegerType:133 - binding '11' to parameter: 5
13:33:07,269 DEBUG LongType:133 - binding '1000000' to parameter: 6

Note
Si cette journalisation n'est toujours pas suffisamment détaillée pour que vous puissiez déboguer le problème SQL, vous pouvez utiliser la bibliothèque P6Spy pour enregistrer lesexact SQL statement qui envoient à la base de données. Consultez cet article -How to display hibernate sql parameter values with P6Spy