三、过滤器的用法
为了支持新过滤器,Hibernate3.x中新添加了一个接口:org.hibernate.Filter,以及在org.hibernate.Session中加入了一些新方法。在Session中的新方法有:enableFilter(String filterName), getEnabledFilter(String filterName),以及disableFilter(String filterName)。在默认性况下,对于当前的会话,过滤器是关闭的。它们必须使用Session的enableFilter()方法来显式地打开过滤器。这个方法返回一个新过滤器的实例。按着上述的做法,我们可以用如下的代码打开过滤器:
session.enableFilter("myFilter").setParameter("myFilterParam", "some-value");
过滤大数据集
对于Hibernate3.x以前的版本,处理大数据集必须要使用大量的代码。为了达到目的,必须先将整个数据集装到内存中,然后对这个数据集使用Session的filter()方法来过滤。而且当过滤实体时,我们必须手工写全部的HQL或一个定制的拦截器。
而在Hibernate3.x中提供了一种更简捷,更一致的方法来过滤数据。Hibernate设计街头团队想用一个更有效的特性来处理每一件事,无论它们是国际化的还是本地数据,或是为了安全考虑以及其他的事。现在让我们看一个例子来解释这一切。