Hibernate通过interceptors和events提供了响应Hibernate内部事件的机制。
1. interceptors的概念
Hibernate中拦截一定的方法调用并进行响应。
org.hibernate.Interceptor接口提供从session中回调应用的方法。
拦截器使得应用可以在执行saved, updated, deleted or loaded之前操作Entity对象。
2. 拦截器的分类:
3. 定制实现拦截器类的方式:
4. events的概念
在持久层,通过EventListener响应一定类型的事件。
一种事件类型对应一种EventListener处理该类型的事件。
通常持久层的事件用于实现声明式安全设置,在发生某些操作之前进行安全检查。
5. events的类型
多数的Session方法都对应一种事件
事件类型的具体定义org.hibernate.event.spi.EventType枚举
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枚举