記錄堆棧跟蹤Java中:如何在Hibernate發出SQL查詢時記錄堆棧跟蹤?
new Throwable.printStackTrace()
要查看由Hibernate,set show_sql to true發出SQL語句。
但是,如何在每次發出SQL查詢時記錄堆棧跟蹤?我想用它來進行性能監控(即查找我們的源代碼的哪一部分產生最多的查詢)。
我看着interceptors and event listeners,他們都沒有在查詢層面給出一個掛鉤。
我還通過源代碼(SQLStatementLogger,Loader)進行了一番觀察。我沒有看到任何鉤子。
我也許可以嘗試一個logging jdbc driver,但是我不清楚調用者的堆棧是否能夠正確保存。
我可以rewrite byte code,但這似乎過分。
編輯:我也可以嘗試AspectJ來通知SQL執行方法。
有沒有人這樣做?最好的方法是什麼?
應標記爲接受解決方案 – AvrDragon