休眠显示真正的 SQL

2022-08-31 04:34:31

如果我设置

<property name="show_sql">true</property>

在我的休眠状态.cfg.xml控制台的配置文件中,我可以看到SQL。

但它不是真正的SQL...我可以看到将直接传递到数据库的 SQL 代码吗?

例:

明白了

select this_.code from true.employee this_ where this_.code=?

我可以看到吗

select employee.code from employee where employee.code=12

真正的 SQL?


答案 1

我可以看到(...)真正的SQL吗?

如果你想看到SQL直接发送到数据库(格式类似于你的示例),你必须使用某种jdbc驱动程序代理,如P6Spy(或log4jdbc)。

或者,您可以启用以下类别的日志记录(在此处使用文件):log4j.properties

log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE

第一个等价于 ,第二个打印绑定参数等。hibernate.show_sql=true

参考


答案 2

log4j.properties

log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug

log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE

休眠.cfg.xml

<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>

持久性.xml

一些框架使用:persistence.xml

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>

推荐