频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

基于Hibernate校验器组件实现Web开发中的校验逻辑(1)

作者: 朱先忠编译 出处:51CTO.com  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2006-11-23 18:09
关 键 词:Java  Hibernate  Web  组件
阅读提示:在本文中,我将向你展示在你的Web应用程序中使用Hibernate注解中的校验器(Validator)组件来构建和维护校验逻辑是多么容易的事情。我们主要分析如何把你的模型层中的注解用于创建你的视图、控制器、DAO及DBMS层中的校验。注意,你必须手工地创建服务层校验(例如信用卡校验)。

【51CTO.com独家特稿】一、简介

虽然在Web应用程序的多个层内加入相应的数据校验功能都十分必要,但是以前实现这项任务是相当费时的,这使得许多开发者干脆略过它—这明显会带来一系列的问题。但是,随着在最新版本的Java平台中引入了注解概念,校验问题容易得多了。在本文中,我将向你展示在你的Web应用程序中使用Hibernate注解中的校验器(Validator)组件来构建和维护校验逻辑是多么容易的事情。

二、预备知识

阅读本文前,你应该对下列内容有一个基本了解:Java 5.0(具体地说是其中的“注解”概念);JSP 2.0(因为我在一个TLD中创建标签文件和定义函数,它们都是JSP 2.0新引入的特征);还有Hibernate和Spring框架。另外请注意,即使没有使用Hibernate实现持久性存储,你也可以在自己的应用程序中使用Hibernate Validator。

与以前的版本相比,Java SE 5增加了许多改进,也许再也没有比注解更为重要的了。借助于注解,你可以最终为你的Java类构造出一种标准的、一流的元数据框架。多年以来,Hibernate用户一直是手工地编写*.hbm.xml文件(或使用XDoclet自动完成这一任务)。如果你手工地创建XML文件的话,相应于每一种需要的持久性属性,你都必须更新两个文件(类定义和XML映射文档)。尽管使用HibernateDoclet可以简化这一工作(具体示例请参考列表1),但是要求你确保你的HibernateDoclet版本支持你想使用的Hibernate版本。另一方面,这种doclet信息在运行时刻还不可用,因为它被编码成Javadoc风格的注释。列表2中的Hibernate注解对这些选择进行了改进—提供一个标准的简明的映射类,而且在运行时刻可用。

列表1.使用HibernateDoclet创建的Hibernate映射代码

/**
* @hibernate.property column="NAME" length="60" not-null="true"
*/
public String getName() {
return this.name;
}
/**
* @hibernate.many-to-one column="AGENT_ID" not-null="true" cascade="none"
*    outer-join="false" lazy="true"
*/
public Agent getAgent() {
return agent;
}
/**
* @hibernate.set lazy="true" inverse="true" cascade="all" table="DEPARTMENT"
* @hibernate.collection-one-to-many class="com.triview.model.Department"
* @hibernate.collection-key column="DEPARTMENT_ID" not-null="true"
*/
public List<Department> getDepartment() {
return department;
}

列表2.使用Hibernate注解创建的Hibernate映射代码

@NotNull
@Column(name = "name")
@Length(min = 1, max = NAME_LENGTH) //NAME_LENGTH是一个在另外地方声明的常数
public String getName() {
return name;
}
@NotNull
@ManyToOne(cascade = {CascadeType.MERGE }, fetch = FetchType.LAZY)
@JoinColumn(name = "agent_id")
public Agent getAgent() {
return agent;
}
@OneToMany(mappedBy = "customer", fetch = FetchType.LAZY)
public List<Department> getDepartment() {
return department;
}

如果你使用HibernateDoclet,那么,只有到生成XML文件或在运行时刻你才能捕获错误。借助于注解,你能够检测编译时刻中的许多错误;或者,如果你使用的是一种优秀的IDE的话,在编辑期间也能够检测出许多错误。当从头创建一个应用程序时,你可以利用hbm2ddl工具来由hbm.xml文件为你的数据库生成DDL。特别注意:name属性的最大长度不超过60个字符,也就是说,DDL应该添加一个“not null”型约束—从HibernateDoclet入口添加到DDL中。当你使用注解时,你可以用一种与此类似的方式自动地生成DDL。

尽管上面列举的两种代码映射方案都可以使用;但是,相比之下,注解具有更为清晰的优点。借助于注解,你可以使用约束来指定长度或其它值。你将拥有更快的构建周期而不需要生成XML文件。最大优点是,你能够在运行时刻存取有用的信息,例如一个“not null”注解或长度。除了在列表2展示的注解之外,你还可以指定校验约束。其中,一些非常有用的约束列举如下:

◆@Max(value=100)
◆@Min(value=0)
◆@Past
◆@Future
◆@Email

在适当的情况下,这些注解将会导致可以使用DDL生成检查约束(显然,@Future并不是一种合适的情形)。你还能够据自己的需要创建定制的约束注解。


共5页: 1 [2] [3] [4] [5] 下一页
【内容导航】
发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看52371次)
·UML类图详解 (查看46839次)
·Java编程开发手册 (查看25118次)
·UML统一建模语言 (查看24099次)
·C#技术开发指南 (查看22406次)
·Java编程开发手册 (1195个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (304个砖)
·PB开发教程 (220个砖)
·.NET开发手册 (217个砖)
·Java编程开发手册 (653个好)
·Java基础教程 (569个好)
·.NET开发手册 (251个好)
·PB开发教程 (209个好)
·Delphi开发技术手册 (174个好)
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有