由于ORM工具的缘故,我们调试程序的时候远没有直接在程序里直接写个string的SQL简单,想当年查个sql是有多么的幸福,一行sql = "select * from ..."找找就行了, 现在用了hibernate, 就算在JPA中开了show_sql=true, 打出来的还是一串 "name = ? and id = ? "
好在找到一个工具, p6spy, 作为真正JDBC的一个代理, 截获了所有sql, 让我们看到一个真实sql的机会。 先下载,以下配置默认跟我目前项目一样
hibernate+proxool+postgresql 改后的部署层次为hibernate+proxool+p6spy+postgresql
p6spy 下载后,将jar包解压, 步骤很简单:
- p6spy.jar放到web程序的web-inf/lib下。
- spy.properteis 放入web-inf/classess下
spy.properties上将以下属性改一下就好了:
realdriver=org.postgresql.Driver //真正的JDBC驱动名 deregisterdrivers=true appender=com.p6spy.engine.logging.appender.StdoutLogger //输出到控制台
然后改proxool连接池的配置, 用p6spy代替真正的JDBC驱动, 作为一个中间代理,截获SQL
proxool.properties
jdbc-0.proxool.driver-class=com.p6spy.engine.spy.P6SpyDriver
配置完成了,打开IDE,欣赏下久违的sql语句吧
Hibernate SQL实际sql语句监控- p6spy+hibernate+proxool 设置,布布扣,bubuko.com