首页
|
Vista
|
WinXP
|
Java
|
程序开发
|
SEO优化
|
网络应用
|
硬件资讯
|
计算机等级认证
|
网站建设
|
问题帮助
|
图形图象
|
程序论坛
微软认证
|
思科认证
|
Java认证
|
Linux认证
|
Oracle认证
|
程序员
|
电子商务
|
网络工程
|
信息系统
|
软件设计
|
信息技术
|
网络管理
Java首页
|
Applets
|
Socket编程
|
JSP
|
Java与XML
|
JavaMail
|
JavaDelphi
|
JavaBeans
|
J2SE
|
J2ME
|
EJB
|
热门:
计算机
Java
vista
服务器
系统
计算机考试
数据库
SQL
北大青鸟
使用技巧
您现在的位置:
立珊计算机专业网
>
程序开发
>
编程语言
>
Java
>
J2EE
>> 文章内容
站内搜索
Hibernate3.x过滤器的高级应用
2008-01-15 05:59:10 来源:立珊网络计算机专业网
推荐给好友
收藏本页
保存本文
在很多应用程序中不需要一次使用数据表中的所有的数据。在这种情况下,我们就需要使用Hibernate的过滤器(Filter)来得到一个数据字集。过滤器的主要作用是限制我们的应用程序的查询数据。这个过滤器的概念并不是什么新概念,如数据库的视图也属于过滤器范畴。而Hibernate为我们提供的过滤器是在一个抽象的层次,它可以做到和不依赖于数据库的类型,使数据访问层只面对一个解决方案,那就是Hibernate Filter。当然,直接在数据库中建立视图也算一种解决方案,但这样做太不灵活。而Hibernate过滤器却能够在Hibernate会话的过程中打开或关闭。另外,另外,Hibernate过滤器可以传递参数,这样将大大增加Hibernate的灵活性。虽然Hibernate2也提供了过滤器,但Hibernate3.x提供了一种全新的过滤器。
Hibernate3的过滤器可以进行预定义,并可绑定在类和集合层。那么什么叫预定义过滤器呢?就是可以定义象"where"子句的限制性子句,但这些子句是相对类和不同集合的元素的。除了这些过滤器条件可以被参数化外。系统还能决定在运行是指定的过滤器是否应该被打开以及什么值被传入过滤器参数。
一、什么时候使用过滤器
为了解释为什么使用过滤器,下面让我们先来看一个例子。假设有一个管理用户信息的Web应用程序。在当前状态,我们的应用程序使用同一个应用接口来处理所有的用户信息。但如果最终用户要求将活动用户和过期用户分开管理。这些状态信息被保存在用户表的某一列中。对于这种需求,我们最容易想到的一个解决方案是重新写每一个SELECT HQL查询语句,也就是在每一个HQL后加一个WHERE条件来过滤这些数据。当然,这种方法的复杂程序取决于你的Web程序是如何建立的,可以很简单,也可以很复杂。但不管是简单还是复杂,都必须得修改我们曾经测试过的代码,这将给我们的程序带来非常大的隐患。而使用Hibernate3.x,将会给我们带来另外一个解决方案。我们将会为应用程序的用户状态创建一个过滤器。当用户选择用户的状态时(活动或过期),应用程序将激活当前Hibernate会话的用户状态过滤器。这样以来,所有的SELECT HQL查询将返回查询结果的子集,而我们只需要在Hibernate会话状态和用户状态过滤器两个地方添加代码,并不需要修改原先的代码。
从概念上讲,你可以使用WHERE子句在应用程序中完成和Hibernate过滤器同样的工作。当然,我们还可以在数据库中建立视图来完成同样的工作(但所使用的数据库必须支持视图功能)。这三种解决方案都可以通过一个或多个查询条件来限制最终结果。而Hibernate过滤器的优势就在于可以随时在程序中关闭或打开,也就是说过滤器是可编程的,而且过滤器被定义在Hibernate的映射文件中,这样将非常容易维护。当然,过滤器也有不足的地方,主要的不足就是在运行时无法创建新的过滤器。而程序在运行时,所有的过滤器必须要在映射文件中被指定。虽然这将大大限制过滤器的灵活性,但过滤器支持参数化。对于本文的例子,我们可以在映射文件中指定保存用户状态信息的列。我们不需要在映射文件中指定可能的状态值,这些在程序运行时都可以指定。接下来我们就来看看如何使用Hibernate3.x中的过滤器来写程序。
转贴于:立珊网络计算机专业网站
共3页: 上一页 1
[2]
[3]
下一页
相关关键字:
应用
高级
过滤器
一个
我们
name
...
可以
使用
用户
上一篇:
Java编程中异常处理的优劣之道
下一篇:
Spring让LOB数据操作变得简单易行
【
设为主页
】【
加入收藏
】【
打印本文
】【
回到顶部
】【
关闭此页
】
点击查看
已有
0
位对此新闻感兴趣的网友发表了看法
我的通行证:
密码:
验证码:
匿名
注册通行证
相关文章
·
Spring让LOB数据操作变得简单易行
·
Java技术在多数据库系统中的应用研究
·
新手入门:写Java程序的三十个基本规则
·
Java SE 6新特性:Instrumentation
·
AJAX推送与拉取方式的比较
·
Java有能力抵挡LAMP的进攻吗?
·
Hibernate+Struts的J2EE应用开发
·
Java Web层的下一个王者是谁?
·
Acegi框架技术详细介绍
·
Spring 2.0+ JRuby 快速入门
推荐文章
·
为Java程序中添加播放MIDI音乐功能
·
Spring破冰之旅 始于足下
·
彻底明白 Java 语言中的IO系统
·
动态调用动态语言之Java脚本API
·
Java 6.0 操作脚本语言基础
·
用纯JAVA语言编程读取MAC地址的实现
·
Java关于Cookie的操作
·
Java开发中的事件驱动模型实例详解
·
用RMI和CORBA进行分布式Java编程
·
在eclipse下配置jboss401配置问题
JavaBeans
·构造Jsp/javabean开发和发布环境的简单办
·Jsp中的Application使用
·jsp中javaBean的运用
·JBOSS3.0.4配置及使用初步
·J2EE'SEJBTechnology
·连接数据库的类
·Petstore源码追踪记(3)-商业逻辑处理(五
·Petstore源码追踪记(3)-商业逻辑处理(四
·Petstore源码追踪记(3)-商业逻辑处理(三
·Petstore源码追踪记(3)-商业逻辑处理(二
J2SE
·这是我们公司总结的一些关于中文乱码问题
·JAR文件包及jar命令详解
·让Java程序自带JRE
·使用J2SE API读取Properties文件的
·JAR 文件揭密
·native2ascii详解
·JavaMail API简介
·利用iText写PDF心得
·简化范式匹配
·MSN历史记录合并工具MSNHistoryCombiner
Java与XML
判断数字、整数的方法 isNumeric
java中判断字符串是否数字的两种
在DOM4J中使用XPath
Web Service初步体验:自定
Getting Start: Apach
构建适用不同客户端的J2EE网络应
Web Service初步体验:Hell
利用JBuilder2005开发Web应用程
Java编程获取硬盘空间
关于站点
-
广告服务
-
联系我们
-
版权隐私
-
免责声明
-
网站地图
-
意见反馈
立珊计算机IT网 版权所有. . 对本站有任何建议、意见或投诉,可以联系我们.
Copyright©2007-2010 Www.Lis123.Com All Rights Reserved.