虽然在hibernate中有show_sql选项,但是显示出来的语句大多类似
select * from xxx where value=?
但是有时候我们需要得到完整的SQL语句,怎么办呢?使用P6SPY就可以完成这个任务
p6spy是一个开源软件,它可以跟踪任何使用jdbc的应用产生的数据库操作。特别适合于监控ejb服务器产生的 sql statements。
官方网址:http://www.p6spy.com/
目前p6spy 适用的应用服务器包括jboss, atg, orion, jonas, iplanet, weblogic, websphere, resin and tomcat.
下面我介绍一下p6spy在tomcat应用程序上安装的步骤:
(1)http://www.p6spy.com/download.html,下载zip包
(2)解压出p6spy.jar spy.properties两个文件
(3)将p6spy.jar 放入应用程序的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记录了数据库的访问情况。
-----------------------------------------
1.下载附件的p6psy.jar以及spy.properties文件
2.将p6spy.jar放到应用的lib目录下,将spy.properties放到WEB-INF\classes目录下
3.修改spy.properties样本的第41行。改成需要的数据库信息
修改spy.properties样本的第54行 。改成需要的数据库信息
修改spy.properties样本的第168行,将spy.log放到比较好找的位置:
例如:logfile = E:/spy.log
4.驱动程序加载先后的问题解决
如果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,重新运行即可。
5.在spring配置文件中配置如下:
- <!-- P6SPY dataSource target -->
- <bean id="dataSourceTarget" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName"
- value="oracle.jdbc.OracleDriver" />
- <property name="url"
- value="jdbc:oracle:thin:@localhost:1521:testdb" />
- <property name="username" value="tet" />
- <property name="password" value="test" />
- </bean>
-
- <!-- dataSource -->
- <bean id="dataSource4develop" class="com.p6spy.engine.spy.P6DataSource" destroy-method="close">
- <constructor-arg>
- <ref local="dataSourceTarget"/>
- </constructor-arg>
- </bean>
分享到:
相关推荐
这篇博客“使用p6spy完整显示hibernate的SQL语句”可能详细解释了如何配置和使用p6spy来跟踪Hibernate生成并执行的SQL。 首先,`p6spy`是一个Java数据库代理库,它可以拦截并记录所有通过JDBC发送到数据库的SQL语句...
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...
将P6Spy与Hibernate结合使用,可以揭示由Hibernate生成并执行的实际SQL语句,包括参数,这对于理解和优化Hibernate的行为至关重要。 1. **配置P6Spy**:首先,需要在项目的类路径下添加P6Spy的jar文件,并在数据库...
标题中提到的“输出完整SQL”,意味着P6Spy可以捕获并记录应用程序发出的所有SQL语句,包括参数。这对于调试和性能分析非常有用,特别是当SQL语句是动态生成或者使用了预编译的PreparedStatement时。 5. **兼容性*...
p6spy 是一个开源的 Java 框架,它的主要功能是在不修改代码的情况下,监控和记录 Java 应用程序中执行的所有 SQL 语句。这个工具对于开发者来说非常有用,因为它可以帮助定位性能瓶颈,特别是在使用 ORM(对象关系...
3. **调试问题**:如果遇到数据库相关的错误或异常,P6Spy的日志可以帮助你快速定位问题所在,因为它们包含了完整的SQL语句和执行上下文。 总之,P6Spy 是一个强大的数据库监控工具,能够提供宝贵的数据库操作信息...
p6spy能够拦截并记录通过JDBC执行的所有SQL语句,包括PreparedStatement中的参数,使得SQL语句的分析和优化变得更加方便。 【SQL语句优化的重要性】 在企业级应用中,SQL语句的性能是决定整体系统效率的关键因素之...
- **概述**:文档提到p6spy可以用于拦截Hibernate通过JDBC执行的SQL语句。Hibernate是一个流行的ORM框架,用于简化Java应用中的数据访问操作。 - **具体步骤**: 1. **替换数据库驱动**:正如前文所述,首先需要将...
P6Spy可以帮助我们监控这些操作,记录执行的SQL语句,包括它们的执行时间、返回结果等信息。这有助于识别可能引起性能瓶颈的慢查询,或者发现可能导致错误或异常的数据输入。 配置P6Spy通常涉及以下几个步骤: 1. ...
P6Spy能够拦截并记录所有的SQL语句,包括HQL转换后的结果,这对于数据库性能分析和调试非常有帮助。 P6Spy的使用步骤通常包括: 1. 添加P6Spy的jar文件到类路径。 2. 配置数据库驱动,让应用程序通过P6Spy的代理...
与hibernate配合使用实现sql语句参数的打印及其他的一些性能方面的监控,有利于优化sql代码,用法上网随便一搜很多的
Hibernate自动生成的SQL语句可能在某些情况下并不是最优化的,因此监控和优化这些SQL语句对于提高整体应用性能是必要的。 在提到提升Hibernate性能的魔方——IronTrack SQL时,我们必须首先了解IronTrack SQL的背景...
P6Spy是一个开源的数据库监控工具,它可以捕获并记录所有的SQL语句,包括执行时间和参数,这对于性能分析、调试和审计非常有价值。在Java应用中集成P6Spy,可以通过配置让其代理数据库驱动,从而在不影响现有代码的...
p6spy是一款轻量级的数据库日志工具,它可以拦截JDBC的调用,记录并打印出执行的SQL语句,对于调试非常有用。 #### 配置p6spy 1. **添加依赖** 在项目的`pom.xml`文件中添加p6spy依赖。 2. **配置日志** 通过...
4、使用p6spy 打印出hibernate 中已经替换了占位符参数的sql语句,为hibernate的调试不在感到苦恼 系统部署我使用的ant 部署,代码包含ant部署文件 skyline\coding\src\config\jdbc.properties 为数据库配置...
Maven框架项目该项目不再更新维护,请移步该项目基于maven3.0构建的,项目中融合了Struts1 , Struts2 , Spring , SpringMVC , ...项目中的持久化框架sql语句的跟踪分别采用log4jdbc结合log4j和p6spy ,在控
同时,使用特定数据库监控工具,如P6SPY和SQL Profiler,可以深入分析SQL执行情况,找出性能瓶颈。 在提到的Hibernate3缺点中,一级缓存的强引用问题可能导致内存占用过多。为了解决这个问题,开发者可以适时调用`...