如果我设置
<property name="show_sql">true</property>
在我的hibernate.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?
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吗
如果希望看到直接发送到数据库的SQL(其格式与示例类似),则必须使用某种jdbc驱动程序代理,如P6Spy(或log4jdbc)。
或者,您可以启用以下类别的日志记录(使用log4j。属性文件在这里):
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
第一种方法相当于冬眠。Show_sql =true时,第二个函数打印绑定的参数。
参考
Hibernate 3.5核心文档
3.5. 日志记录
Hibernate 4.1核心文档
4.1. 日志记录