hibernate打印完整sql语句

本文介绍如何使用P6SPY在Tomcat应用中完整显示Hibernate生成的SQL语句,通过配置文件及步骤实现数据库操作监控,并提供详细安装指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    虽然在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记录了数据库的访问情况。

 

http://blog.163.com/xu_shuhao/blog/static/52577487201192153016500/

 

jpa相关参数

http://jinnianshilongnian.iteye.com/blog/1439369

### 配置 Hibernate 打印完整 SQL 语句 为了使 Hibernate 能够打印完整SQL 语句,包括参数值而不是仅显示占位符,可以通过多种方式实现这一目标。 #### 方法一:通过 `application.yml` 或者 `application.properties` 对于 Spring Boot 应用程序,在配置文件中设置如下属性: ```yaml spring: jpa: properties: hibernate: format_sql: true # 格式化SQL语句以便于阅读[^1] show_sql: true # 控制台是否打印SQL语句 use_sql_comments: true # 显示操作注释 logging: level: org.hibernate.SQL: DEBUG # 启用SQL日志记录 org.hibernate.type.descriptor.sql: TRACE # 记录绑定参数的日志级别为TRACE[^2] ``` 上述配置不仅启用了 SQL 的显示功能,还设置了合适的日志级别来捕获实际传递给数据库的参数值。这使得最终输出到控制台上的 SQL 更加直观易读,并可以直接用于测试环境中的查询验证。 #### 方法二:通过 XML 文件配置 如果项目不是基于 Spring Boot,则可以在项目的 `hibernate.cfg.xml` 中定义相应的属性: ```xml <hibernate-configuration> <session-factory> <!-- 开启SQL语句显示 --> <property name="show_sql">true</property> <!-- 使用Log4J或其他日志框架追踪SQL执行细节 --> <property name="use_sql_comments">true</property> </session-factory> </hibernate-configuration> ``` 同时还需要调整 Log4J 或其他使用的日志库配置,确保能够捕捉到来自 Hibernate 的调试信息以及参数绑定详情。例如,在 Log4J 配置中加入下面两行: ```properties log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=TRACE ``` 这种方法同样能帮助开发者获取带有具体参数值而非问号占位符的完整 SQL 文本。 #### 方法三:借助第三方工具或插件 除了修改应用程序本身的配置外,还可以考虑利用一些专门设计用来增强开发体验的小型工具或IDE 插件。这些工具有助于更方便地查看和分析由 Hibernate 发送至数据库的实际命令流。不过需要注意的是,这类解决方案通常依赖具体的 IDE 支持情况而定[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值