一、概述
Hibernate执行持久化过程中,应用程序无法参与其中。但可以通过事件框架,Hibernate允许应用程序响应特定的内部事件,从而实现某些功能或者对Hibernate的某些功能进行扩展。
二、Hibernate事件框架
1. 拦截器机制
通过Interceptor接口,可以从Session中回调应用程序的特定方法,这种回调机制可让应用程序在持久化对象被保存、更新、删除和加载之前,检查并修改其属性。使用拦截器步骤如下:
定义实现Interceptor接口的拦截器类;
通过Session启用拦截器,或者通过Configuration启用全局拦截器。
2. 事件系统
Hibernate3的事件系统是功能更强大的事件框架,事件系统可以代替拦截器,也可以作为拦截器的补充来使用。基本上,Session接口的每个方法都有对应的事件,比如LoadEvent、FlushEvent等。当Session调用某个方法时,Hibernate Session会生成对应的事件,并激活对应的事件监听器。
监听器是单例模式对象,即所的同类型的事件处理共享同一个监听器实例,因此监听器不应该保存任何状态,即不应该使用成员变量。使用步骤如下:
实现自己的事件监听器类;
注册自定义事件监听器,代替系统默认的事件监听器。