代码之家  ›  专栏  ›  技术社区  ›  Tommaso Taruffi

hibernate show real sql[重复]

  •  366
  • Tommaso Taruffi  · 技术社区  · 15 年前

    如果我设置

    <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?

    5 回复  |  直到 8 年前
        1
  •  343
  •   Matt Anxo P    8 年前

    我能看看(…)真正的sql吗?

    如果希望看到直接发送到数据库的sql 类似的 对于您的示例),您必须使用某种jdbc驱动程序代理,如 P6Spy (或) log4jdbc )

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

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

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

    参考文献

        2
  •  216
  •   Dave Jarvis James Eichele    8 年前

    log4j.属性

    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>
    

    持久性.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"/>
    
        3
  •  15
  •   Brian Riehman    15 年前

    如果您已经可以看到正在打印的sql,这意味着您的hibernate.cfg.xml中包含以下代码:

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

    要同时打印绑定参数,请将以下内容添加到log4j.properties文件中:

    log4j.logger.net.sf.hibernate.type=debug
    
        4
  •  11
  •   gub    15 年前

    值得注意的是,您看到的代码将按原样发送到数据库,查询将单独发送以防止sql注入。是吗?标记是由数据库而不是hibernate替换为数字参数的占位符。

        5
  •  5
  •   Stephen Denne    15 年前

    select this_.code from true.employee this_ where this_.code=? 将发送到数据库的内容。

    this_ 是该实例的别名 employee 表。