您可以在Hibernate / EJB 3.0中关闭某些查询的日志消息吗?
有没有办法只为一个查询覆盖参数“hibernate.show_sql”?
答案 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。