【问题标题】:How to intercept I/O db operations in Hibernate?如何在 Hibernate 中拦截 I/O db 操作?
【发布时间】:2017-03-16 06:08:05
【问题描述】:

我可以向 Hibernate 添加监听器吗?它会在每次访问 sql db 时触发?

我想在 MyThread 中执行 Hibernate 查询,我将在此侦听器中检查:Thread.currentTread() instanceof MyThread。

线程检查应该在 I/O 操作之前调用。如果当前线程不是 MyThread 的实例,则应触发 UnexpectedThreadException。

我尝试使用 org.hibernate.interceptor,但似乎在从 db 读取数据之前没有调用任何方法。

【问题讨论】:

标签: java multithreading hibernate


【解决方案1】:
Session session = sessionFactory.openSession();
session.addEventListeners(new BaseSessionEventListener() {
    @Override
    public void jdbcExecuteStatementStart() {
        DbTaskThread.requireDbTaskThread();
        super.jdbcExecuteStatementStart();
    }

    @Override
    public void jdbcConnectionReleaseStart() {
        DbTaskThread.requireDbTaskThread();
        super.jdbcConnectionReleaseStart();
    }

    @Override
    public void jdbcConnectionAcquisitionStart() {
        DbTaskThread.requireDbTaskThread();
        super.jdbcConnectionAcquisitionStart();
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多