ホームページ >Java >&#&チュートリアル >Hibernate はプレースホルダーではなく実際のパラメーター値を使用して SQL クエリをログに記録できますか?

Hibernate はプレースホルダーではなく実際のパラメーター値を使用して SQL クエリをログに記録できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-27 09:35:10538ブラウズ

Can Hibernate Log SQL Queries with Actual Parameter Values Instead of Placeholders?

Hibernate でパラメータ値を含むクエリ文字列を出力する

Hibernate を使用する場合、デバッグやデバッグを容易にするために、生成された SQL クエリを出力すると便利です。パフォーマンス分析。デフォルトでは、これらのクエリはパラメータ値に疑問符 (?) プレースホルダを付けてログに記録されるため、渡される実際のデータを理解することが困難になる可能性があります。

Can Hibernate Print SQL Queries with Real Values?

簡単に言うと「いいえ」です。Hibernate は実際のパラメータ値を使用して SQL クエリをログに記録する方法を直接提供しません。ただし、この機能を実現するにはいくつかの方法があります。

JDBC パラメータのログの有効化

1 つの方法は、次のカテゴリのログを有効にすることです:

  • org.hibernate.SQL: すべての SQL DML をログに記録するためにデバッグに設定しますステートメント。
  • org.hibernate.type: すべての JDBC パラメーターをログに記録するためにトレースするように設定します。

この目的のためのサンプル 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。