雖然在hibernate中有show_sql選項,但是顯示出來的語句大多類似
select * from xxx where value=?
但是有時候我們需要得到完整的SQL語句,怎么辦呢?使用P6SPY就可以完成這個任務(wù)
p6spy是一個開源軟件,它可以跟蹤任何使用jdbc的應(yīng)用產(chǎn)生的數(shù)據(jù)庫操作。特別適合于監(jiān)控ejb服務(wù)器產(chǎn)生的 sql statements。
官方網(wǎng)址:http://www.p6spy.com/
目前p6spy 適用的應(yīng)用服務(wù)器包括jboss, atg, orion, jonas, iplanet, weblogic, websphere, resin and tomcat.
下面我介紹一下p6spy在tomcat應(yīng)用程序上安裝的步驟:
(1)http://www.p6spy.com/download.html,下載zip包
(2)解壓出p6spy.jar spy.properties兩個文件
(3)將p6spy.jar 放入應(yīng)用程序的WEB-INF/lib目錄,將spy.properties放入WEB-INF/classes目錄
(4)修改spy.properties
realdriver =com.mysql.jdbc.Driver 將這行前面的#去掉
logfile = c:/spy.log 修改一個你需要的日志文件名
(5)修改hibernate.xml,修改connection.driver_class的值為com.p6spy.engine.spy.P6SpyDriver
(6)重啟tomcat
(7)這樣在c:/下的spy.log記錄了數(shù)據(jù)庫的訪問情況。