关闭某些查询的休眠日志

时间:2010-03-18 08:30:59

标签: java hibernate log4j ejb-3.0

您可以在Hibernate / EJB 3.0中关闭某些查询的日志消息吗?

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

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