hibernate 4 listener
- 作者: 彧丶纯属扯淡
- 来源: 51数据库
- 2021-01-25
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);
}
}
在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);
}
}
推荐阅读
