在hibernate3.x中,如果需要使用hibernate的监听器,在hibernate.cfg.xml中进行配置即可,在spring中也有对应的设置属性;
org.springframework.orm.hibernate3.LocalSessionFactoryBean类中存在属性eventListeners可以设置事件监听对象;
<span style="font-size:14px;"><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${dataSource.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
<property name="eventListeners">
<span style="white-space: pre;"> </span><map><entry key="save" value-ref="saveListener"></entry></map>
</property>
</bean></span><span style="font-size:14px;">saveListener对应的类可通过集成 <span style="font-family: Arial; font-size: 14px; line-height: 26px;"><span style="color: rgb(255, 0, 0);">org.hibernate.event.def </span></span></span><span style="font-size: 14px; line-height: 29.7000007629395px; font-family: Arial; white-space: pre-wrap;">的类,详情参考:<span style="color: rgb(0, 0, 40); font-family: 'microsoft yahei'; font-size: 18px; line-height: 29.7000007629395px; white-space: pre-wrap;"><strong>http://blog.csdn.net/jialinqiang/article/details/8739326</strong></span></span>
-
- 在hibernate4.x版本中, listener从以前的Configuration中移除,因此在org.springframework.orm.hibernate4.LocalSessionFactoryBean中也找不到对应的
<span style="font-size:14px;"><property name="eventListeners"></span>
- 在hibernate4.x版本中, listener从以前的Configuration中移除,因此在org.springframework.orm.hibernate4.LocalSessionFactoryBean中也找不到对应的
在hibernate4.x中注册监听器如下,
HibernateEvent
import javax.annotation.PostConstruct;
import org.hibernate.SessionFactory;
import org.hibernate.event.service.spi.EventListenerRegistry;
import org.hibernate.event.spi.EventType;
import org.hibernate.internal.SessionFactoryImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.sinba.search.solr.util.SaveListener;
/**
* 处理hibernate的事件监听
* @author gs60
*/
@Component
public class HibernateEvent {
@Autowired
private SessionFactory sessionFactory;
@Autowired
private SaveListener saveListener;
@PostConstruct
public void registerListeners() {
EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry().getService(
EventListenerRegistry.class);
registry.getEventListenerGroup(EventType.POST_INSERT).appendListener(saveListener);
}
}
import org.hibernate.event.spi.PostInsertEvent;
public class SaveListener implements org.hibernate.event.spi.PostInsertEventListener{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void onPostInsert(PostInsertEvent arg0) {
System.out.println("SaveListener.onSaveOrUpdate()"+arg0.getEntity().getClass().getName());
}
}官方参考文档:http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html_single/#registering-listeners-example
本文介绍了在Hibernate 3.x和4.x版本中如何在Spring环境中配置Hibernate监听器。在Hibernate 3.x中,可以通过LocalSessionFactoryBean的eventListeners属性设置;而在Hibernate 4.x中,由于监听器从Configuration中移除,需要按照新的方式注册监听器。
661

被折叠的 条评论
为什么被折叠?



