- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Hibernate的对象持久化技术的研究
摘要:当今大部分的应用系统需要处理持久化数据,而在使用面向对象技术开发系统时,会遇到对象持久化的问题。同时使用关系数据库存储数据,存在对象模型与关系模型之间的“阻抗不匹配”问题。对广泛使用的0/R映射框架Hibernate进行研究,使用Hibernate作为业务逻辑层和数据库层之间的持久层,实现对象到关系数据库的持久存储。结合实际应用系统分析对象/关系映射在Hibernate持久化解决方案中的体现。
关键词:对象持久化;持久层;对象/关系映射;Hibernate
中图分类号:TP311
文献标识码:A
文章编号:1004-373X(2008)04-066-03
现今,面向对象开发技术已经普及到各种软件开发领域中,他是用符合事物本原与适应人类自身思维方式的方法组织程序。面向对象技术是一种基于类和对象的应用程序开发技术,程序员通过使用类和对象,以及对他们继承、封装等操作,可以方便地开发出高质量的应用程序。同时当前大多的应用程序都使用关系数据库作为数据的存储机制。而面向对象的机制与关系模型有着很大的不同,他们之间存在阻抗不匹配(Impedance Mismatch)。面向对象设计基于软件工程的一些原理如聚集、封装等理论,其使用一组对象来完成任务;而关系模型基于数学原理,尤其是集合论的原理。因此,需要一种映射方法解决这种不匹配,对象关系映射便随之产生。把对表直接进行的操作,变成对对象的属性和方法的操作。Hibernate是一个基于Java的开放源代码的对象关系映射框架,他对JDBC做了轻量级的封装。目前Hibernate已被广泛使用,作为企业应用和关系数据库之间的中间件,以减轻和对象持久化有关的大量的JDBC编程工作。
1 对象持久化
1.1对象持久化的定义
在使用面向对象技术开发应用系统时,系统运行过程中构造的对象实例,都是瞬时或暂时性的,叫作暂态对象或临时对象;他存在于内存之中,系统一旦停止运行,这些对象都将消失,信息不复存在。因此,需要将对象实例长期持久地保存,使之成为永久对象,这就是对象持久化。
1.2 实现对象持久化的方法
对象持久化技术是可以永久地存储对象的方法,持久化机制包括基于操作系统的文件存储、关系数据库RDB和面向对象的数据库OODB等。目前大多使用关系数据库作为对象持久化的存储机制,采用关系数据库实现对象持久化的方法主要有:内嵌SQL语句、封装成数据类以及使用对象持久层。
(1)内嵌SQL语句:这种方法最为常见,他是在类的源代码中嵌入SQL语句。其优点是编码快捷,适用于小型应用程序和原型模型中;缺点是难于维护和扩展,数据库的小变化(如:列的重新命名)也会导致源代码的改写。模式图如图1所示。
(2)封装成数据类:这种方法是将业务类里的SQL语句封装到一个或几个“数据类”里,例如存储过程和EJB的实体Bean策略。这种方法适用于40~50个类的小型系统。但是当数据库发生简单变化时,仍会导致数据类的重新编译。模式图如图2所示:
(3)对象持久层:持久层是应用程序与数据库的隔离层,他封装了与数据库交互的底层细节。使用持久层时数据库的简单改变不会影响面向对象的代码。程序员只需管理和使用面向对象的数据,而不必关心数据存储的底层实现细节。模式图如图3所示。
2 对象/关系映射
面向对象的机制与关系模型之间存在着阻抗不匹配,两者有着不同的理论基础。对象模型侧重于使用包含数据和行为的对象来构建应用程序;而关系模型则主要针对于数据的存储。两种机制的不同使他们的结合并不理想。因此,需要一种映射方法来解决两者之间的不匹配。这种方法就是对象关系映射0bject/Relational Mapping(O/RMapping)。
2.1对象/关系映射模式
在研究对象/关系映射的模式时,通常采用如下的对应关系将对象与数据表关联起来:
根据抽象对象与关系数据库的特性,O/R Mapping在以下几个方面实现:
(1)从类属性到数据表列的映射。类属性和表列并非一一对应。一个类属性可对应O或多个实体表的字段。在设置主键时,通常采用无业务意义的字段对象标识符(Object Identifier,OID)作为各个实体表的主键,OlD也作为类与数据库映射时的对象的惟一标识。
(2)从类到数据表的映射。当不同层次的父类和子类映射到数据表时,应该根据实际的系统设计结果,权篌采用怎样的映射策略。这种映射主要是指继承映射,可以采用的映射策略主要分为以下3种:1个类继承树1个表、1个具体类1个表和1类1表。
(3)
文档评论(0)