代码之家  ›  专栏  ›  技术社区  ›  mgamer

关闭特定查询的休眠日志

  •  3
  • mgamer  · 技术社区  · 14 年前

    可以在Hibernate/EJB3.0中关闭某些查询的日志消息吗?

    是否有方法仅为一个查询重写参数“hibernate.show_sql”?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Thierry    14 年前

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

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

    我更喜欢使用第二种方法:它要灵活得多,因为您可以在运行时通过JMX控制台更改它(如果您使用JBoss,这是开箱即用的)。
    而且,Hibernate正在使用ApacheCommons日志记录(hibernate.show_sql,hibernate只是将请求写入system.out)。

    我认为有可能为给定的类别提供一个记录器的自定义实现(我不知道这有多容易或难,我从来没有这样做过)。然后,您只需提供在日志记录请求和不在日志记录实现中记录请求之间做出决定的逻辑。

        2
  •  0
  •   Brian Deterling    14 年前

    如果只是一个查询,也就是说,您不需要会话中的结果来进行其他更新,那么您可以为该查询创建单独的会话工厂。