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

問題

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

hibernate log4j ロギング リンク://タグ/パラメータ/[パラメータ]