Java でスタック トレースを記録します。
new Throwable.printStackTrace()
Hibernate によって発行された SQL ステートメントを表示するには、show_sql を true に設定します。
しかし、SQL クエリが発行されるたびにスタック トレースをログに記録するにはどうすればよいでしょうか。これをパフォーマンスの監視に使用したいと思います (つまり、ソース コードのどの部分が最も多くのクエリを生成するかを調べます)。
インターセプターとイベントリスナーを調べましたが、クエリレベルでフックを提供するものはないようです。
ソース(SQLStatementLogger、Loader)も少し調べました。フックは見えません。
ロギング jdbc driverを試すこともできますが、呼び出し元のスタックが適切に保存されるかどうかは不明です。
バイトコードを書き換えることはできましたが、それはやり過ぎのようです。
編集: AspectJを試して、SQL実行方法をアドバイスすることもできます。
誰かがこれをしましたか?最善の方法は何ですか?