hibernateのsqlパラメーター値を表示する方法– P6Spy
質問
Hibernate SQLパラメーター値の質問について質問する多くの開発者がいます。 データベースに渡されたHibernate SQLパラメーター値を表示する方法は? Hibernateはすべてのパラメーター値を疑問符(?)として表示するだけです。 show_sqlプロパティを使用すると、Hibernateは生成されたすべてのSQLステートメントを表示しますが、SQLパラメーター値は表示しません。
例えば
Hibernate: insert into example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME) values (?, ?, ?, ?, ?, ?)
正確なHibernate SQLパラメーター値を記録または表示する方法はありますか?
ソリューション– P6Spy
さて、質問がある場合は答えがあります〜
P6Spyは、データベースに送信する前にすべてのSQLステートメントとパラメーター値を記録する便利なライブラリです。 P6Spyは無料で、データベースのすべてのSQLステートメントを傍受してログファイルに記録するために使用され、JDBCドライバーを使用するすべてのアプリケーションで機能します。
1. P6Spyライブラリをダウンロードする
「p6spy-install.jar」を取得します。ダウンロードするには
2. 抽出する
p6spy-install.jarファイルを抽出し、p6spy.jarとspy.propertiesを探します
3. ライブラリの依存関係を追加
プロジェクトライブラリの依存関係にp6spy.jarを追加します
4. P6Spyプロパティファイルを変更する
データベース構成ファイルを変更します。 既存のJDBCドライバーをP6SpyJDBCドライバーに置き換える必要があります–”com.p6spy.engine.spy.P6SpyDriver
”
オリジナルはMySQLJDBCドライバー–「com.mysql.jdbc.Driver」
false com.mysql.jdbc.Driver password jdbc:mysql://localhost:3306/example root org.hibernate.dialect.MySQLDialect true
P6Spy JDBCドライバー–「com.p6spy.engine.spy.P6SpyDriver」に変更しました
false com.p6spy.engine.spy.P6SpyDriver password jdbc:mysql://localhost:3306/example root org.hibernate.dialect.MySQLDialect true
5. P6Spyプロパティファイルを変更する
P6Spyプロパティファイルを変更します–「spy.properties」
「実際のドライバー」を既存のMySQL JDBCドライバーに置き換えます
realdriver=com.mysql.jdbc.Driver #specifies another driver to use realdriver2= #specifies a third driver to use realdriver3=
Change the Log file location
logfileプロパティでログファイルの場所を変更すると、すべてのSQLステートメントがこのファイルにログインします。
Windows
logfile = c:/spy.log
*nix
logfile = /srv/log/spy.log
6. 「spy.properties」をプロジェクトクラスパスにコピーします
「spy.properties」をプロジェクトのルートフォルダにコピーし、プロジェクトが「spy.properties」を見つけることができることを確認します。そうしないと、「spy.properties」ファイルが見つかりませんという例外が表示されます。
7. Done
アプリケーションを実行してデータベーストランザクションを実行すると、アプリケーションからデータベースに送信されるすべてのSQLステートメントが「spy.properties」で指定したファイルに記録されます。
サンプルログファイルは次のとおりです。
insert into example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME) values (?, ?, ?, ?, ?, ?)| insert into example.stock_transaction (CHANGE, CLOSE, DATE, OPEN, STOCK_ID, VOLUME) values (10.0, 1.1, '2009-12-30', 1.2, 11, 1000000)
結論
率直に言って、P6Spyは開発者のデバッグ時間を短縮するのに非常に役立ちます。 プロジェクトが接続にJDBCドライバーを使用している限り、P6Sqpはそれに適合し、すべてのSQLステートメントとパラメーター値をログに記録できます。
Mavenユーザーの場合
Mavenを使用して、P6Spyの依存関係をpom.xml
にダウンロードできます。
p6spy p6spy 1.3
ただし、「spy.properties」ファイルはパッケージに含まれていないため、自分で作成する必要があります。 ここからテンプレートをダウンロードできます–spy.properties