目前很多公司的项目都采用了ssh或ssi框架,在该框架下的SQL输出串不能显示SQL语句里所包含的参数,调试起来相当麻烦。通过P6spy框架来进行SQL监视,可以将SQL MAP中的SQL语句包含参数完整输出。
以下p6spy与ssh/ssi整合的方法:
1. 在p6spy官方网站,下载p6spy.jar,放在lib目录下,将spy.properties放在 web-inf/classes下面(工作区最好是英文目录且无空格)。
2. 修改spy.properties,把realdriver 改为项目里使用的JDBC驱动名,如 realdriver=com.mysql.jdbc.Driver,其他的realdriver全部用#注释掉,修改 logfile=指定的SQL日志输出文件,如 logfile = d:/spy.log ,生成的SQL将会被写到到这个文件,只要执行SQL后查看该文件即可。
3.如果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,然后重新运行。
4. 修改Spring配置文件,一般是applicationContext.xml
把原来的数据源定义注释掉,然后加入以下配置:
<bean id="dataSourceTarget" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="(jdbc驱动名,如com.mysql.jdbc.Driver)" />
<property name="url" value="<URL>" />
<property name="username" value="<用户名>" />
<property name="password" value="<密码>" />
</bean>
<bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource" destroy-method="close">
<constructor-arg>
<ref local="dataSourceTarget"/>
</constructor-arg>
</bean>
5. 完成。
另外补充一点,根据各项目的不同对事物的管理不同,第5部根据项目而定
相关推荐
2. **监听器实现:** 当容器启动时,编写一个监听器(listener),用于将带有特定编码后缀的文件转换成标准的`import.sql`文件。这一步骤可以在容器启动时自动完成,确保了正确读取文件内容。 ```java package ...
SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言。本文将深入探讨如何获取操作数据库的SQL语句,并讲解如何输出带有参数的SQL,以实现更高效、安全的数据库操作。 首先,让我们了解什么是...
这个问题在64位操作系统上尤其常见,因为不同的数据库管理系统(DBMS)之间可能存在多种不同的字符编码标准。 #### 二、核心概念解析 1. **NLS_LANG环境变量**: - NLS_LANG是一个环境变量,用于控制Oracle客户端和...
3. **hibernate-jpa-2.1-api.jar**:这个JAR包含JPA 2.1规范的API,使得Hibernate能够与JPA标准保持一致。 4. **javassist.jar**:Hibernate使用javassist库动态生成字节码,实现对Java类的增强,比如添加getter和...
例如,通过设置hibernate.show_sql为true,可以在控制台中输出执行的SQL语句,便于调试。 关于Hibernate的更多高级特性,例如二级缓存、拦截器和事件监听机制等,可以在学习Hibernate的官方文档或相关书籍中深入...
8. **hibernate-jpa-2.0-api-1.0.0.Final.jar**:这个jar包包含了Java Persistence API(JPA),是Java EE中定义的标准ORM规范,Hibernate实现了JPA接口,使得开发者可以通过标准的方式来使用ORM功能。 9. **slf4j-...
5. **查询语言**: HQL(Hibernate Query Language)和QBC(Query By Criteria)是Hibernate提供的两种面向对象的查询语言,可以替代SQL进行数据库查询。 6. ** Criteria查询**: 一种更强大的查询方式,允许动态构建...
4. **hibernate-entitymanager-5.0.7.Final.jar**:提供了JPA(Java Persistence API)的实现,使得开发者可以使用标准的JPA接口来操作数据库,而无需直接使用Hibernate的API。 5. **log4j-1.2.16.jar**:日志记录...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程模型来处理数据库操作,从而减轻了传统SQL编程的负担。在Java Web开发中,Hibernate是极其重要的一部分,因为它简化了数据持久化的...
这样,Hibernate的输出可以被配置并发送到不同的日志目的地,如控制台、文件或远程服务器。 这些jar包的组合使用,使得Hibernate 3能够无缝地与Java应用程序集成,提供高效、灵活的数据库操作能力,同时也简化了...
3. **hibernate-jpa-2.1-api.jar**:这是JPA 2.1的API接口定义,提供了一套标准的持久化编程模型,使得不同ORM框架如Hibernate、EclipseLink等可以遵循统一的标准。 4. **hibernate-validator.jar**:提供了Bean ...
3. **HQL检索**:HQL(Hibernate Query Language)是一种面向对象的查询语言,类似于SQL,但语法更接近面向对象的概念。HQL支持多种查询方式,如选择、排序等。 4. **QBC检索**:QBC(Query By Criteria)是一种基于标准...
格式化从标准输入接收SQL语句,并将其输出到标准输出。 使用例 echo " SELECT * FROM HOGE WHERE HOGE.FUGA = :fuga " | java -jar target/sql-formatter-1.0.1-jar-with-dependencies.jar 输出结果 SELECT * ...
Hibernate作为一个对象关系映射(ORM)工具,它允许开发者使用面向对象的方式来处理数据库,通过在Java对象和数据库表之间建立映射关系,从而避免了编写大量的SQL语句。 要搭建一个基于Hibernate的项目,首先要确保...
Hibernate,作为一款广泛使用的Java对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者无需直接编写SQL,就能实现对数据库的操作。在Hibernate 4.2.4版本中,其核心库包含了一系列关键的jar包,这些jar包...
3. **查询语言**:Hibernate支持HQL(Hibernate Query Language),一种面向对象的查询语言,类似于SQL,但更贴近Java对象。此外,Hibernate还提供了Criteria API,提供了一种类型安全的查询方式。 4. **缓存机制**...
10. **错误排查与调试**: 在实际开发过程中,可能会遇到各种问题,如连接失败、SQL异常等,这时候需要熟悉日志输出,理解错误信息,调试并解决问题。 总之,要成功地在J2EE环境中利用Hibernate与Oracle数据库交互,...
在Java开发领域,Hibernate是一个备受青睐的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者能够更专注于业务逻辑而不是底层SQL语句。本资源集合整理了所有用于搭建和运行Hibernate项目所需的Jar包...
3. **userInfo.sql**:这可能是数据库初始化脚本,用于创建用户信息相关的表结构和初始数据。 4. **WebContent**:这是Web应用的标准目录结构,包含HTML、JSP、CSS、JavaScript文件以及WEB-INF目录,其中可能有web....
2. 提供了对JPA(Java Persistence API)的全面支持,使开发者可以选择标准的JPA规范进行开发。 3. 引入了HQL(Hibernate Query Language),一个面向对象的查询语言,允许开发者以类和属性而非表和字段进行查询。 4...