二、过滤器的配置
为了使用过滤器,它们需要首先被定义,然后和响应的元素绑定。为了定义一个过滤器,我们将使用<hibernate-mapping/>中的<filter-def/>元素来定义Hibernate过滤器。如下所示:
<filter-def name="myFilter"> <filter-param name="myFilterParam" type="string"/> </filter-def> |
然后我们将这个过滤器附着在一个类上,如下所示:
<class name="myClass" ...> ... <filter name="myFilter" condition=":myFilterParam = my_filtered_column"/> </class> |
或附着在一个集合上。
<set ...> <filter name="myFilter" condition=":myFilterParam = my_filtered_column"/> </set> |
当然,我们也可以两者皆有。
三、过滤器的用法
为了支持新过滤器,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设计街头团队想用一个更有效的特性来处理每一件事,无论它们是国际化的还是本地数据,或是为了安全考虑以及其他的事。现在让我们看一个例子来解释这一切。
 
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
2/2 首页 上一页 1 2 |