您可以在 Hibernate/EJB 3.0 中关闭某些查询的日志消息吗?
有没有办法为单个查询覆盖参数“hibernate.show_sql”?
最佳答案
从 hibernate 配置来看,我认为这是不可能的。
Hibernate 为您提供了两种记录查询的方法:通过将 hibernate 参数 hibernate.show_sql 设置为 true 或通过将日志类别 org.hibernate.SQL 设置为 DEBUG。两种方式都是独立的,如果您同时使用这两种方式,您的查询将被记录两次。
我更喜欢使用第二种方式:它更加灵活,因为您可以在运行时通过 jmx-console 更改它(如果您使用 jboss,这是开箱即用的)。
而且,hibernate 正在使用 apache 公共(public)日志记录(使用 hibernate.show_sql,hibernate 只是将请求写入 System.out)。
我认为可以为给定类别提供 Logger 的自定义实现(我不知道这有多容易或多难,我从来没有做过)。然后,您只需在 Logger 实现中提供决定是否记录请求的逻辑。
关于java - 关闭特定查询的 Hibernate 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468346/