1、定义过滤器。使用
[html]
2、使用过滤器。使用
[html]
3、启用过滤器。在代码中通过Session启用。
[java]
session.enableFilter("myfilter") //启用myfilter过滤器
.setParameter("asOfDate"new Date()); //设置参数
十二、Hibernate的缓存
Hibernate的缓存有一级缓存和二级缓存。一级缓存是Session级别的,是一个局部缓存,只对当前Session有效。而二级缓存是SessionFactory级别的,是全局缓存,它对所有的Session都有效。
对于一级缓存而言,所有经它操作的实体,不管是使用save()、update()、savaOrUpdate()
保存对象,还是使用load()、get()、list()、iterate()、scroll()方法获得一个对象,session都会将该对象放入缓存中去。在这里我们要注意:当Session操作大批数据时,要注意它会抛出内存溢出异常。
对于二级缓存,Hibernate默认是关闭的。在使用二级缓存时,我们需要经过如下步骤:
1、在Hibernate.cfg.xml文件中开启二级缓存。
2、复制二级缓存的JAR包。
3、将缓存实现所需要的配置文件添加到系统的类加载路径在中。
4、设置对那些实体类、实体的那些熟悉启用二级缓存。
为了更好的管理二级缓存,我们可以使用二级缓存的统计功能。
通过查看二级缓存的内容,我们可以更好的管理二级缓存。
十三、Hibernate的事件机制
通过事件机制,Hibernate允许应用程序能够响应特定的内部事件,从而允许实现某些通用的功能或者对Hibernate功能进行扩展。
Hibernate的事件机制框架有两种“
1、拦截器机制:对于特定的动作拦截,回调应用中的特定动作。
2、事件系统:重写Hibernate的事件监听器。
拦截器
通过Interceptor接口,可以在数据进入数据库之前,对数据进行最后的检查。
使用拦截器按如下步骤进行:
1、定义实现Interceptor接口的拦截器类
2、通过Session启用拦截器,或者通过Configuration启用全局拦截器。
在使用拦截器时,可以通过如下两种方法实现:
1、通过SessionFactory的openSession方法打开一个带局部拦截器的Session。
2、通过Configuration的setInterceptor()方法设置全局拦截器。
事件系统
Session接口的每个方法都有对应的事件,当Session调用某个方法时,Hibernate Session会产生对应的事件,并激活对应的事件监听器。
使用事件系统按如下步骤:
1、实现自己的事件监听器类。
2、注册自定义事件监听器,代替系统默认的事件监听器。
实现用户的自定义监听器有如下三种方法:
1、实现对应的监听器接口。
2、继承事件适配器。
3、继承系统默认的事件监听器:扩展特定的方法。(推荐)。
作者:m13666368773