Мне нужно перехватить все операции сохранения / обновления / удаления в приложении Hibernate.
Я начал с подхода Interceptor , но перехватчики Hibernate не перехватывали HQL (например, HQL executeUpdate, см. Здесь Перехватчик / прослушиватели Hibernate для HQL ).
Поэтому для более комплексного решения я решил использовать Прослушиватели событий (в частности SaveOrUpdateEventListener).
Но как зарегистрировать следующий прослушиватель событий в Hibernate XML?Это старое приложение, которое не использует аннотации configurer, все основано на XML.Мне нужно, чтобы этот настроенный прослушиватель событий SaveOrUpdate запускался при каждом сохранении или обновлении.
public class HibernateSaveUpdateEventListener extends DefaultSaveOrUpdateEventListener {
@Override
public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException {
logger.info("Intercepted EventLister's onSaveOrUpdate");
super.onSaveOrUpdate(event);
}
}
Hibernate 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>
...
Использование: Hibernate 4.3.8, Spring 4.1.5