我需要拦截Hibernate应用程序中的所有保存/更新/删除操作。
我从 Interceptor 方法开始,但是Hibernate的Interceptor不能捕获HQL(例如HQL executeUpdate,请参见此处Hibernate Interceptor/Listeners for HQL)。
因此,为了获得更全面的解决方案,我决定使用事件监听器(尤其是SaveOrUpdateEventListener)。
但是如何在Hibernate XML中注册以下事件监听器?这是一个较旧的应用程序,它不使用配置程序注释,所有内容都基于XML。我需要这个自定义的SaveOrUpdate事件监听器才能在每次保存或更新时触发。
public class HibernateSaveUpdateEventListener extends DefaultSaveOrUpdateEventListener {
@Override
public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException {
logger.info("Intercepted EventLister's onSaveOrUpdate");
super.onSaveOrUpdate(event);
}
}
休眠XML:
<!-- Define the sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<!--NEED TO PLUG IN MY EVENT LISTENER HERE, how to do it? -->
<!--............-->
<property name="hibernateProperties">
<props>
...
使用:休眠4.3.8,春季4.1.5