hibernate监听器的配置,在spring中

来源:互联网 发布:常用mysql语句大全 编辑:程序博客网 时间:2024/06/05 10:45

在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>
所以在使用时,spring集成hibernate4的时候是不能使用原来的监听设置了;

在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 */@Componentpublic class HibernateEvent {@Autowiredprivate SessionFactory sessionFactory;@Autowiredprivate SaveListener saveListener;@PostConstructpublic 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;@Overridepublic 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

0 0
原创粉丝点击