AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > JAVA编程

Hibernate3.x过滤器的高级应用

51自学网 2015-09-03 http://www.wanshiok.com

 

  二、过滤器的配置

  为了使用过滤器,它们需要首先被定义,然后和响应的元素绑定。为了定义一个过滤器,我们将使用<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不保证资料的完整性。
 

上一篇:Spring让LOB数据操作变得简单易行  下一篇:Java编程中异常处理的优劣之道