Hibernate的interceptors与events

来源:互联网 发布:国家中级程序员证书 编辑:程序博客网 时间:2024/06/08 05:10
Hibernate通过interceptors和events提供了响应Hibernate内部事件的机制。

1. interceptors的概念
Hibernate中拦截一定的方法调用并进行响应。
org.hibernate.Interceptor接口提供从session中回调应用的方法。
拦截器使得应用可以在执行saved, updated, deleted or loaded之前操作Entity对象。


2. 拦截器的分类:
  • Session-scoped interceptor,在Session打开时设置的拦截器
Session session = sf.interceptor( new MyInterceptor() ).openSession();

  • SessionFactory-scoped interceptor,在构造SessionFactory之前,通过Configuration对象设置的拦截器,适用于SessionFactory创建的所有Session(除非Session另外设置了拦截器)
new Configuration().setInterceptor( new MyInterceptor() );...

sessionFactoryBuilder.applyInterceptor( new LoggingInterceptor() );

3. 定制实现拦截器类的方式:

  • 实现org.hibernate.Interceptor接口
  • 扩展org.hibernate.EmptyInterceptor类


4. events的概念
在持久层,通过EventListener响应一定类型的事件。
一种事件类型对应一种EventListener处理该类型的事件。
通常持久层的事件用于实现声明式安全设置,在发生某些操作之前进行安全检查。


5. events的类型
多数的Session方法都对应一种事件
事件类型的具体定义org.hibernate.event.spi.EventType枚举
1 0
原创粉丝点击