一尘不染

Java 使用Hibernate时如何打印带有参数值的查询字符串

java

在Hibernate中是否可以用实际值而不是问号打印生成的SQL查询?

如果Hibernate API无法实现,您将如何建议使用实值打印查询?


阅读 267

收藏
2020-02-26

共1个答案

一尘不染

您需要为以下类别启用日志记录:

  • org.hibernate.SQL -设置debug为在执行所有SQL DML语句时记录它们
  • org.hibernate.type-设置为trace记录所有JDBC参数

因此,log4j配置如下所示:

# logs the SQL statements
log4j.logger.org.hibernate.SQL=debug 

# Logs the JDBC parameters passed to a query
log4j.logger.org.hibernate.type=trace 

第一个等效于hibernate.show_sql=truelegacy 属性,第二个则打印绑定参数。

另一个解决方案(基于非hibernate)是使用JDBC代理驱动程序,如P6Spy。

2020-02-26