hibernateのSQLパラメータ値を表示する方法 - Log4j

hibernateのsqlパラメーター値を表示する方法– Log4j

問題

Hibernateには、show_sql構成プロパティを使用してSQLで生成されたステートメントを表示する基本的なロギング機能があります。

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

ただし、デバッグには十分ではなく、Hibernate SQLパラメーター値が欠落しています。

ソリューション– Log4j

Log4Jは、実際のHibernate SQLパラメーター値を表示するために必要です。

1. HibernateでLog4jを構成する

この記事に従ってconfigure Log4j in Hibernate

2. ログレベルを変更する

Log4jプロパティファイルを変更し、「log4j.logger.org.hibernate.type」プロパティでログレベルを「debug」または「trace」に変更します。

ファイル: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