P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。
一、P6Spy的安装与使用
1、从 http://www.p6spy.com/ 下载P6Spy的文件包,也可以下载它的源文件包来研究;
2、把P6Spy的jar包p6spy.jar放到classpath中,如果是Web应用程序则放在YourWebApp/WEB-INF/lib/目录下;
3、把spy.properties放到classes目录下[tomcat的common/lib下也可],如果是webapp就放在YourWebApp/WEB-INF/classess/目录下,记得不是lib/目录
4、修改你程序的数据库驱动名称为P6Spy的驱动程序名称com.p6spy.engine.spy.P6SpyDriver其它的都不用更改;
5、打开spy.properties文件,把realdriver的值改为你的程序的数据库驱动名称;
6、运行你的应用程序或Web应用程序,可以在spy.log里看到监测到的sql详细记录信息了。
7、驱动程序加载先后的问题解决
如果spy.log里出现
你的程序的数据库驱动名称 is a real driver in spy.properties, but it has been loaded before p6spy. p6spy will not wrap these connections. Either prevent the driver from loading, or try setting 'deregisterdrivers' to true in spy.properties
请把spy.properties文件里的deregisterdrivers=false改为deregisterdrivers=true,重新运行即可。
二、结合SQL Profiler进行图形化监控与使用
1、从 http://www.jahia.net/ 下载SQL Profiler的文件包进行安装;
2、把p6spy.jar及sqlprofiler.jar放到classpath中,如果是Web应用程序则放在YourWebApp/WEB-INF/lib/目录下;
3、把spy.properties放到classes目录下[tomcat的common/lib下也可],如果是webapp就放在YourWebApp/WEB-INF/classess/目录下,记得不是lib/目录。注:此包中的spy.properties与P6Spy.jar的是不一致的。
4、修改你程序的数据库驱动名称为P6Spy的驱动程序名称com.p6spy.engine.spy.P6SpyDriver其它的都不用更改;
5、打开spy.properties文件,把realdriver的值改为你的程序的数据库驱动名称;
6、注意要先运行 java -jar sqlprofiler.jar 来启动SQL Profiler,并成功看到启动后界面;
7、然后再启动你的应用程序或服务器,并开始进行正常的系统请求处理操作;
8、这样可以在SQL Profiler图形化的界面上看到结果并进行分析了。
并且可以通过保存按钮导出数据库优化建议的索引脚本。
**另一篇:
SHOW_SQL获得HIBERNATE生成的SQL中,update/insert语句中的value被替换成“?”,下面方法利用p6spy获得对驱动的封装来拦截获得所执行的SQL语句,开发环境:tomcat 4.1.24 + oracle 9i 。
注:p6spy.jar及spy.properties可以从www.p6spy.com下载
1、将p6spy.jar、commons-logging.jar、log4j-1.2.8.jar拷贝到WEB-INF\lib下
2、将spy.properties拷贝到WEB-INF\classes下
3、修改JDBC连接,在HIBERNATE与JDBC驱动之间插入p6spy,方便获得SQL语句
1)由oracle.jdbc.driver.OracleDriver为com.p6spy.engine.spy.P6SpyDriver
2)修改spy.properties样本的第41行,使用ORACLE驱动,封闭缺省的MYSQL驱动:
# oracle driver
realdriver=oracle.jdbc.driver.OracleDriver
3)修改spy.properties样本的第54行,封闭缺省的MYSQL驱动:
# the mysql open source driver
# realdriver=org.gjt.mm.mysql.Driver
4)修改spy.properties样本的第168行,将spy.log放到比较好找的位置:
logfile = E:/spy.log
重新启动tomcat,E:/SPY.LOG可以看到hibernate生成的带值的SQL。
分享到:
相关推荐
虽然在hibernate中有show_sql选项,但是显示出来的语句大多类似 select * from xxx where value=? 但是有时候我们需要得到完整的SQL语句,怎么办呢?使用P6SPY就可以完成这个任务
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...
p6spy简介,p6spy完整显示hibernate的SQL语句 包括参数,spring p6spy 配置
NULL 博文链接:https://28680360-qq-com.iteye.com/blog/1673095
p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用 p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用 p6spy和sqlProfiler的配合使用让你的hibernate的show_sql更好用
内含p6spy-3.6.0.zip,p6spy最新Hibernate和Mybatis拦截并格式化sql配置.txt两个文件,用于调试监控项目运行状态,亲测可用,测试整理出来花了我很长时间的,好用不可多得!
专门用来监控hibernate的sql输出,进行调试应用程序的工具,找了好久才找到,里面有个配置文件,记住realdriver是你的驱动,而在hibernate设置的驱动是这个驱动代理,p6spy的驱动,相当于在hibernate和数据库之间放...
p6spy 是对 mybatis、hibernate 的 SQl 监控,提高在开发过过程中效率。 本人直男癌一枚,希望我提供的 p6spy 的配置和使用对亲们有帮助,谢谢!
# oracle driver # realdriver=oracle.jdbc.driver.OracleDriver # mysql Connector/J driver ... # informix driver ... # ibm db2 driver ...# the mysql open source driver realdriver=org.gjt.mm.mysql.Driver ...
p6spy.rar工具类,可输出完整sql,支持jdk1,5,亲测可用
p6spy支持jpa(如hibernate、ibatis/mybatis)打印完整sql。 此为本人在p6spy源码基础上进行修改,使其能在sql日志中过滤resultset,是sql更简洁,开发更方便。
在企业做项目时如果用了hibernate会有个头疼问题,就是如何让输出sql方便查看,因为出了问题时,要去查错时sql日志会给我们很大帮助,但hibernate通过配p6spy输出很乱,且只能输了到spy.log中,很不好查看,这里是我...
与hibernate配合使用实现sql语句参数的打印及其他的一些性能方面的监控,有利于优化sql代码,用法上网随便一搜很多的
hibernate封装底层数据库操作,提供持久化数据服务 spring管理hibernate--数据源,事务 dao层提供数据库访问接口;service层(事务控制)提供业务接口 ...p6spy+sqlprofile sql监控调优 jUnit测试
4、使用p6spy 打印出hibernate 中已经替换了占位符参数的sql语句,为hibernate的调试不在感到苦恼 系统部署我使用的ant 部署,代码包含ant部署文件 skyline\coding\src\config\jdbc.properties 为数据库配置...
12)、SQL监控使用P6SPY。 13)、JS和CSS压缩使用YUI Compressor。 14)、JAVA代码混淆使用Allatori。 15)、获取系统信息使用Sigar。 16)、单元测试使用JUnit。 17)、配置文件加密使用Jasypt。 18)、缓存使用...
Maven框架项目该项目不再更新维护,请移步该项目基于maven3.0构建的,项目中融合了Struts1 , Struts2 , Spring , SpringMVC , ...项目中的持久化框架sql语句的跟踪分别采用log4jdbc结合log4j和p6spy ,在控
使用ibatis 提供的ORM 机制,对业务逻辑实现人员而言,面对的是纯粹的Java 对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求...
xml java系统源码 lanjerry-framework 简介 基于 SpringBoot2、JWT和Shiro...P6spy 3.8.5 权限框架 Shiro 1.4.1 身份认证 JWT 3.3.0 数据校验 HibernateValidator 6.0.17.Final 工具包 HuTool 4.5.16 接口文档 Swagg