Как отобразить значения параметров Hibernate SQL - Log4j
проблема
Hibernate имеет базовую функцию ведения журнала для отображения сгенерированного SQL оператора со свойством конфигурацииshow_sql.
Hibernate: INSERT INTO example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME) VALUES (?, ?, ?, ?, ?, ?)
Однако этого просто недостаточно для отладки, значения параметров Hibernate SQL отсутствуют.
Решение - Log4j
Log4J требуется для отображения реального значения параметра Hibernate SQL.
1. Настройте Log4j в Hibernate
Следуйте этой статье доconfigure Log4j in Hibernate
2. Изменить уровень журнала
Измените файл свойств Log4j и измените уровень журнала на «отладка» или «трассировка» в свойстве «log4j.logger.org.hibernate.type».
Файл: 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
Реальные значения параметров Hibernate теперь отображаются
Выход…
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
Если это ведение журнала по-прежнему недостаточно подробное, чтобы вы могли отладить проблему SQL, вы можете использовать библиотеку P6Spy для регистрацииexact SQL statement, отправляемых в базу данных. Проверить эту статью -How to display hibernate sql parameter values with P6Spy