欢迎来到天天文库
浏览记录
ID:40554591
大小:419.00 KB
页数:15页
时间:2019-08-04
《Hibernate简化继承映射》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Hibernate简化继承映射Hibernate是一个对象关系映射和持久性框架,它提供了许多高级特性,从内省到多态和继承映射。但是,把类的层次结构映射到关系数据库模型,可能会比较困难。本文将介绍三个策略,在日常的编程之中您可以用它们把复杂的对象模型容易地映射到关系数据库模型。概述Hibernate是一个纯Java的对象关系映射和持久性框架,它允许您用XML配置文件把普通Java对象映射到关系数据库表。使用Hibernate能够节约大量项目开发时间,因为整个JDBC层都由这个框架管理。这意味着您的应用程序的数据访问层位于Hibernate之上,完全
2、是从底层数据模型中抽象出来的。比起其他类似的对象关系映射技术(JDO、实体bean、内部开发等),Hibernate有许多优势:它是免费的、开源的,已经成熟到良好的程度,并得到广泛应用,而且还有一个非常活跃的社区论坛。要把Hibernate集成到现有的Java项目,则需要执行以下步骤:1.从Hibernate的Web站点下载Hibernate框架的最新发行版(请参阅参考资料一节中的链接。)2.把必需的Hibernate库(JAR文件)复制到应用程序的CLASSPATH。3.创建XML配置文件,用它把Java对象映射到数据库表。(我们将在本文中描述
3、这个过程。)4.把XML配置文件复制到应用程序的CLASSPATH。您会注意到,不必修改任何Java对象,您就可以支持框架。例如,假设您对Java应用程序使用的数据库表做了些修改——例如修改了列名。在修改完表之后,您要做的只是更新对应的XML配置文件。您不需要重新编译任何Java代码。Hibernate查询语言(HQL)Hibernate提供了一个查询语言,叫作Hibernate查询语言(HQL),它与SQL很相似。如果您喜欢用老式的SQL查询,那么Hibernate也为您提供了使用它们的机会。但是我们使用的示例只用HQL。HQL用起来相当简单。
4、您会发现所有的关键字都与您熟悉的SQL中的关键字类似,例如SELECT、FROM和WHERE。HQL与SQL的差异在于,您不用针对数据模型(即针对表和列等)直接编写查询,而是应该针对Java对象,使用Java对象的属性和关系编写查询。清单1演示了一个基本的示例。这个HQL代码检索firstName为“John.”的所有Individual。清单1.基本HQL查询SELECT*FROMeg.hibernate.mapping.dataobject.IndividualWHEREfirstName="John"如果想了解更多有关HQL语法的内容,那么
5、您可以参阅Hibernate的Web站点上有关HQL的参考材料(请参阅参考资料,以获得链接)。XML配置文件功能的核心在于XML配置文件。这些文件必须存在于应用程序的CLASSPATH中。我们把它们放在示例代码包的config目录中(您可以从参考资料下载)。我们要研究的第一个文件是hibernate.cfg.xml。它包含与数据源有关的信息(数据库URL、模式名称、用户名、口令等),以及对包含映射信息的其他配置文件的引用。其余的XML文件允许您把Java类映射到数据库表。稍后我再深入介绍这些文件,但重要的是要清楚它们的文件名要遵守ClassNam
6、e.hbm.xml这个模式。我们的支持示例在本文中,我们要研究一个基本示例,演示Hibernate如何工作,如何良好地运用三个不同策略,利用Hibernate进行对象关系映射。我们的示例是一家保险公司使用的应用程序,公司必须保持客户投保的所有产权的法律记录。我们随本文提供了完整的源代码(请参阅参考资料);这个代码提供了基本功能,您可以根据它构建全功能的应用程序,例如Web或Swing应用程序。我们的示例采用了这类应用程序的经典用例。用户提供搜索参数,查找各种类型的客户(个人、公司、政府机构等),然后显示与指定参数匹配的所有客户列表——即使这些客户
7、的类型不同。用户可以访问同一列表中的某一特定客户更加详细的视图。在我们的应用程序中,产权由Right类表示。Right可以是Lease也可以是Property。Right由客户所有。为了表示我们的客户,我们要使用通用类Person。Person即可以是Individual也可以是Corporation。当然,保险公司必须知道这些Right被分配给哪个Estate。您应当同意,Estate这个术语代表的意义非常泛。所以,我们要用Land和Building类给我们的开发人员提供更具体的操作对象。从这个抽象出发,我们可以开发图1所示的类模型:图1.完整
8、的类模型我们的数据库模型是为了介绍将在本文中讨论的三个不同策略而设计的。对于Right层次结构来说,我们要使用一个表(TB_RIGHT)
此文档下载收益归作者所有