spring3 hibernate4 如何支持EventListener 系统操作日志

1、在spring3.1.0发布版本上是否支持Hibernate 4.X版本的EventListener呢?

在spring3.1.0版本,针对hibernate3 通过查看LocalSessionFactroyBean的源码可以知道,有一个eventListenser的属性来设置EventListeners。但是在hibernate4中,查看LocalSessionFactroyBean源码去不支持EventListener。由于spring3.X 对hibernate4不支持这样的配置。我还是按配置hibernate3一样的方法配置hibernate4导致我浪费了一个上午的时间。hibernate4 改变了注册EventListener的方式。

2、hibernate4 注册eventListener的方式

1、通过注解方式(测试通过

@Component
public class HibernateEventWiring {

@Autowired
private SessionFactory sessionFactory;

@Autowired
private LogListener logListener;

@PostConstruct
public void registerListeners() {
    EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry().getService(
            EventListenerRegistry.class);
    registry.getEventListenerGroup(EventType.POST_INSERT).appendListener(logListener);
    registry.getEventListenerGroup(EventType.POST_UPDATE).appendListener(logListener);
 registry.getEventListenerGroup(EventType.POST_DELETE).appendListener(logListener);
}
}

2、通过注解方式(未测试)

参考hibernate4 官方开发文档

http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/#registering-listeners-example

猜你喜欢

转载自shusanzhan.iteye.com/blog/1891579