gpt4 book ai didi

java - 如何拦截Hibernate生成的SQL?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:27 25 4
gpt4 key购买 nike

对于作为老大哥工作的安全系统(如监视强制访问控制),我们必须拦截和处理 hibernate 生成的所有选择语句。我们将用户、时间戳和 sql 选择存储在数据库中,以便使用其他工具进行一些分析。这些信息可以确定用户试图查看的内容。对于 select 语句,准备好的属性很有值(value)。我们需要包含所有参数的完整 SQL 语句。

有没有我们可以加入并处理所有这些事情的监听器或拦截器?目前最大的突出问题是语句参数的收集。

谢谢

最佳答案

org.hibernate package is set to DEBUG, and with the hibernate.show_sql property set. 的日志记录级别时,实际参数值恰好可用(至少据我所知)如果您希望数据库本身中的记录器输出,请使用 JDBCAppender。

或者,您可以查看 log4jdbc project ,声明如下:

In the logged output, for prepared statements, the bind arguments are automatically inserted into the SQL output. This greatly Improves readability and debugging for many cases.

如果那不合适,你可以调查是否P6Spy can be used in your situation .在 WebLogic Server 上,等效功能是通过 WebLogic JDBC Spy 实现的,它与某些数据库的 WebLogic JDBC 驱动程序一起开箱即用。这两个都写入 System.out 而不是数据库(除非我弄错了),所以它可能没那么有用。

关于java - 如何拦截Hibernate生成的SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3403361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com