問題
Hibernateには、基本的なロギング機能があり、
show__sql
設定プロパティでSQL生成ステートメントを表示します。
Hibernate: INSERT INTO mkyong.stock__transaction (CHANGE, CLOSE, DATE, OPEN, STOCK__ID, VOLUME) VALUES (?, ?, ?, ?, ?, ?)
しかし、それだけではデバッグには不十分で、HibernateのSQLパラメータ値はありません。
解決策 – Log4j
Log4Jは実際のHibernate SQLパラメータ値を表示する必要があります。
1. HibernateでLog4jを設定する
この記事に従ってください://hibernate/how-to-configure-log4j-in-hibernate-project/[HibernateでLog4jを設定する]
2.ログレベルを変更する
Log4jプロパティファイルを変更し、 ”
log4j.logger.org.hibernate.type
“プロパティでログレベルを “debug”または “trace”に変更します。
File: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.完了
Hibernateの実パラメータ値は現在表示されています
出力…
Hibernate: INSERT INTO mkyong.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