【问题标题】:Turn off Hibernate Logs for certain query为某些查询关闭休眠日志
【发布时间】:2011-01-28 22:16:12
【问题描述】:

你能在 Hibernate / EJB 3.0 中关闭某些查询的日志消息吗?

有没有办法为单个查询覆盖参数“hibernate.show_sql”?

【问题讨论】:

    标签: java hibernate log4j ejb-3.0


    【解决方案1】:

    从休眠配置来看,我认为这是不可能的。

    Hibernate 为您提供了两种记录查询的方法:将 hibernate 参数 hibernate.show_sql 设置为 true 或将日志类别 org.hibernate.SQL 设置为 DEBUG。两种方式都是独立的,如果您同时使用这两种方式,您的查询将被记录两次。

    我更喜欢使用第二种方式:它更加灵活,因为您可以在运行时通过 jmx-console 更改它(如果您使用 jboss,这是开箱即用的)。
    而且,hibernate 正在使用 apache commons logging(使用 hibernate.show_sql,hibernate 只是将请求写入 System.out)。

    我认为可以为给定类别提供 Logger 的自定义实现(我不知道这有多容易或多难,我从来没有做过)。然后,您只需要提供在 Logger 实现中决定是否记录请求的逻辑。

    【讨论】:

      【解决方案2】:

      如果它只是一个查询,即您不需要会话中的结果来进行其他更新,您可以为该查询创建一个单独的 SessionFactory。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-06
        • 1970-01-01
        相关资源
        最近更新 更多