2012-11-30 96 views
2

有很多原因,我寧願不公開(長而枯燥的故事),我需要捕捉與數據庫中的複雜應用程序的交互。該應用程序建立在Spring/JdbcTemplate之上,我需要找到該應用程序發出的所有SQL。我怎樣才能以最簡單的方式做到這一點?最簡單的方式發送出去

創建一個僞模擬實現的JdbcTemplate似乎不太合理。首先關閉JdbcTemplate是一個類而不是接口。其次它有一個很大的接口,這使得它很難實現。我正在嘲弄DataSourceConnection以獲得所有發出的SQL,但也許有更簡單的方法來做到這一點?

+2

如果我沒有記錯,設置Spring的日誌級別爲DEBUG將所有SQL語句寫入日誌文件 –

+0

正確的,但是當我需要這個迴歸測試的目的。如果可能的話,我寧願不要讓我的迴歸測試基礎設施依賴於日誌記錄輸出。 –

回答

4

這類問題非常乾淨利落地解決了是如。 P6Spy。有一個good article關於如何使它與Spring一起工作。

希望有所幫助。

+0

我測試過它,效果很好。優秀!我非常高興你救了我不必重新發明輪子。乾杯! –

2

捕獲所有SQL走出去的唯一的辦法是你的應用程序和數據庫之間的接觸點。這意味着,從實際處理JDBC交互的庫實現裝飾DataSourceConnection,和所有類型的Statement S,並記下被從SimpleJdbcTemplate bean定義指定的裝飾數據源的裝飾連接上運行的所有語句。從可維護性的角度來看,在任何其他點上捕捉這個都是具有挑戰性的。

+0

這就是我認爲的,是有道理的。 –