【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映射代码
|
列表2.使用Hibernate注解创建的Hibernate映射代码
|
如果你使用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] 下一页 | ||
|
|
|||
| · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · CISSP认证成长之路 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 |
· 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |