Hibernate显示真正的SQL
如果我设置
<property name="show_sql">true</property> 
在我的控制台的hibernate.cfg.xmlconfiguration文件中,我可以看到SQL。
但这不是真正的 SQL …我可以看到将直接传递到数据库的SQL代码吗?
例:
我懂了
 select this_.code from true.employee this_ where this_.code=? 
我可以看吗
 select employee.code from employee where employee.code=12 
真正的 SQL?
我可以看到(…)真正的SQL
如果你想看到直接发送到数据库的SQL(格式与你的例子类似 ),你将不得不使用某种像P6Spy (或者log4jdbc )这样的jdbc驱动代理。
 或者,您可以启用以下类别的logging(在此使用log4j.properties文件): 
 log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type=TRACE 
 第一个等同于hibernate.show_sql=true ,第二个打印绑定参数等等。 
参考
-   Hibernate 3.5核心文档
- 3.5。 logging
 
 -   Hibernate 4.1核心文档
- 4.1。 logging
 
 
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 
的hibernate.cfg.xml
 <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="use_sql_comments">true</property> 
persistence.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"/> 
如果您已经可以看到正在打印的SQL,那意味着您的hibernate.cfg.xml中包含以下代码:
 <property name="show_sql">true</property> 
要打印绑定参数,请将以下内容添加到log4j.properties文件中:
 log4j.logger.net.sf.hibernate.type=debug 
值得注意的是,你看到的代码是原样发送到数据库,查询分开发送,以防止SQL注入。 AFAIK? 标记是由数据库的数字参数replace的占位符,而不是hibernate。
 select this_.code from true.employee this_ where this_.code=?  是什么将被发送到您的数据库。 
  this_是employee表的那个实例的别名。