Hibernate でパラメータ値を含むクエリ文字列を出力する
Hibernate を使用する場合、デバッグやデバッグを容易にするために、生成された SQL クエリを出力すると便利です。パフォーマンス分析。デフォルトでは、これらのクエリはパラメータ値に疑問符 (?) プレースホルダを付けてログに記録されるため、渡される実際のデータを理解することが困難になる可能性があります。
Can Hibernate Print SQL Queries with Real Values?
簡単に言うと「いいえ」です。Hibernate は実際のパラメータ値を使用して SQL クエリをログに記録する方法を直接提供しません。ただし、この機能を実現するにはいくつかの方法があります。
JDBC パラメータのログの有効化
1 つの方法は、次のカテゴリのログを有効にすることです:
この目的のためのサンプル log4j 構成:
log4j.logger.org.hibernate.SQL=debug log4j.logger.org.hibernate.type=trace
org.hibernate.SQL ロガーは従来の hibernate.show_sql=true プロパティと同等であり、すべての SQL ステートメントをログに記録します。 org.hibernate.type ロガーは、トレースするように設定すると、バインドされた値を含む JDBC パラメーターに関する詳細情報を提供します。
JDBC プロキシ ドライバーの使用
別の解決策P6Spy などの JDBC プロキシ ドライバーを利用することです。このツールは、JDBC 呼び出しをインターセプトし、バインドされたパラメーター値を含む SQL ステートメントのリアルタイムのログを提供します。 P6Spy は、構成ファイルまたは環境変数を使用して構成できます。
これらの方法の 1 つを採用すると、実際のパラメーター値を含む SQL クエリを出力できるようになり、Hibernate を使用する場合のデバッグおよび分析プロセスが強化されます。
以上がHibernate はプレースホルダーではなく実際のパラメーター値を使用して SQL クエリをログに記録できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。