我可以在每次访问sql db时触发Hibernate的监听器吗?
我想在MyThread中执行Hibernate查询,在这个监听器中,我要检查:Thread.currentTread()是MyThread的实例。
应在I / O操作之前调用线程检查。如果当前线程不是MyThread的实例,则应触发UnexpectedThreadException。
我尝试使用org.hibernate.interceptor,但似乎没有在从db读取数据之前调用的方法。
答案 0 :(得分:0)
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();
}
});