【问题标题】:Intercepting queries to a database拦截对数据库的查询
【发布时间】:2023-03-23 02:19:02
【问题描述】:

所以我试图拦截对数据库的调用。现在我有一个java程序来监听通知(各种程序的调用)。我正在尝试扩展它以分析这些程序之一对使用 Hibernate ORM 的数据库所做的查询。

我正在研究 Hibernate Interceptor,这看起来很有趣。如何将拦截器集成到我的程序中?我不确定如何使用它与其他程序连接以收听呼叫。还是 Listener 是更好的选择?

谢谢,哈利

【问题讨论】:

    标签: java database hibernate interceptor


    【解决方案1】:

    您可能正在寻找代理 JDBC 驱动程序。这些包装了一个普通的 JDBC 驱动程序并记录发生了什么。

    一个例子是log4jdbc,我相信还有其他的。

    这些的好处是您不需要更改程序,只需更改它使用的 JDBC 驱动程序的名称。

    【讨论】:

    • 谢谢!我将首先研究 Hibernate Interceptor,因为这看起来更简单,如果这不起作用,我会尝试这种方法。感谢您的建议。
    【解决方案2】:

    要将 Hibernate 拦截器集成到您的程序中,您必须按照以下步骤操作:

    1. 创建一个扩展 hibernate 的 EmptyInterceptor 的类。

    2. 实施与您的要求相关的方法。

    3. 将其设置为配置,如

      配置cfg = new Configuration();

      cfg.setInterceptor(new YourInterceptor());

    【讨论】:

    • 谢谢!我研究了 EmptyInterceptor ,这似乎相当简单。我只需要一些我认为的方法。我会把配置的东西放在哪里呢?这是在我的初始程序中(我与其他程序建立连接并初始化通知侦听器)还是在单独的配置文件中?抱歉,我以前从未使用过 Hibernate。
    • @您将在您的初始程序中执行此操作,您将在其中读取配置文件(hibernate.cfg.xml),然后在创建 sessionFactory 之前设置拦截器。
    猜你喜欢
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2016-05-19
    • 1970-01-01
    • 2018-06-13
    相关资源
    最近更新 更多