77范文网 - 专业文章范例文档资料分享平台

对象关系映射技术的发展与应用-1

来源:网络收集 时间:2020-04-18 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

对象关系映射技术的发展与应用

摘要:首先本文基于J2EE体系结构介绍在开发中使用编程语言与数据库进行数据交互的三种方式:使用SQL/JDBC在业务中的硬编码、使用SQL/JDBC在单独的数据类中的硬编码和对象关系映射模式(ORM模式)。其次,介绍使用面向对象编程语言的一种设计模式用于实现对象关系映射技术——DAO设计模式和实现对象关系映射模式设计标准的四个级别。最后,介绍对象关系映射模式的一种实现框架——Hibernate以及它的核心接口和设计原则另外结合DAO设计模式和Hibernate框架建立数据持久层模型以及实现过程流程图。

关键词:JAVA;ORM;DAO;Hibernate

Development and application of object-relational

mapping technology

Yaoding Wang

Abstract:Based on J2EE architecture first introduced the use of programming languages and database data interaction in development of three ways: using SQL / JDBC hard-coded in the business, using SQL / JDBC hardcoded and object-relational data in a separate class mapping modes (ORM mode). Secondly, the use of object-oriented programming language is a design pattern for implementing object-relational mapping technology --DAO design patterns and realization of the four-level object-relational mapping pattern design standards. Finally, an implementation framework --Hibernate object-relational mapping modes and interfaces as well as its core design principles combined with DAO design patterns and additional Hibernate data persistence layer framework for establishing a process flow diagram and model implementation.

Key words: JAVA;ORM;DAO;Hibernate

前言:面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。

1、J2EE的三层架构

J2EE的三层结构[1,2]是指表示层(Presentation),业务逻辑层(Businesss Login)以及基础架构层(Infrastruelure)。但是在实际项目中,往往会对三层体系结构做一些扩展为五层体系,即表示层(Presentation)、控制/中介层(Controller/Mediator)、领域层(Domain)、数据持久层(Data Persistence)和数据源层(Data Source)。五层体系实际上实在三层架构的中层增加了两个中间层。控制/中介层位于表示层和领域层之间,数据持久层位于领域层和基础架构层之间,体系结构如图1所示:

遵从J2EE的N层体系结构[3]的应用程序会因为减少了内部的耦合而提高其健壮性。如图1所示,如果用户接口层要获得信息,必须与业务层的对象交互,然后在通过业务层对象从持久层获得存储在持久机制中的对象。J2EE体系结构的一个重要特点是就是通过禁止用户层与持久结构解耦。通过将程序的业务逻辑封装到业务类中而不是用户接口

类中,可以在多处使用这些业务逻辑,从而提高应用程序的复用性。所以,合理设计持久层是一个至关重要的问题。

图1 J2EE的N层体系结构图

2、数据持久层的集中解决方案

2.1 使用SQL/JDBC在开发中的硬编码

使用SQL/JDBC[4]在开发中硬编码数据流示意图如图2所示,这种模式实际上是在开发语言中直接编写SQL语句对数据库[5]进行操作,这种模式的好处是写代码效率很高,对于小型应用程序或者原型是可行的。缺点是直接耦合了的业务类与关系数据库结构,这意味着任何一个小的改变(例如对某一列重命名或者移植到另外一种数据库)都导致源代码级的修改,使代码难于维护和扩展。

图2 SQL/JDBC对数据库的操作

2.2使用SQL/JDBC 在单独的数据类中硬编码。

用SQL/JDBC在单独的数据类中硬编码数据流示意如图3所示,在这种方法中,业务类的SQL/JDBC语句被封装在一个或者多个“数据类”中。这使得业务类不用直接跟数据库进行交互,但是在对数据进行改动后,仍然需要修改和重新编译数据类。这种方法也只适合原型或者小型(少于40或者50个业务类)的系统。

图3 抽象数据类对应的业务类

2.3对象关系映射模式(ORM模式)

对象关系映射模式[6](ORM模式)是Java应用中的对象到关系数据中的表的自动和透明的持久化,使用元数据描述了对象与数据库间的映射。本质上,ORM是将数据从一种表示(双向)装换为另一种。将对象映射到某种持久机制(在这里是关系数据库)并且对关系数据结构的简单改动并不影响面向对象代码的健壮的持久层。

这种方法的优点是应用程序开发者不需要了解关系数据库结构,甚至不需要知道对象是保存在关系数据库中。同时,这种方法支持大规模的针对关键业务的应用程序。

3、DAO和对象关系映射设计模型

设计模式这一概念源于建筑学领域, 目的是为重复出现的问题提供一种最佳解决方案。在软件开发领域, 设计模式表现为一组精心安排的通用的类和对象, 再经过定制和实现就可用来解决特定上下文中的问题。

3.1 DAO设计模式

DAO(Data Access Object)模式称为数据访问对象模式。通常应用于数据库操作的业务逻辑代码中。该模式的本质是向外部提供一个访问数据源的统一接口, 对外隐藏操作数据源的实现细节。这是因为在实际的应用过程中, 应用程序所面对的数据源往往是多种多样的。不同数据源的连接方式、数据访问方式会有明显的差异。这就导致了需要访问数据源的组件的代码实现方式与数据源的类型有着密切的关系。组件和数据源之间的这种紧耦合关系也就导致了整个应用系统难以在不同数据源之间进行迁移。使用DAO模式后, 即使系统需要进行数据源的迁移, 也只需在DAO模式内部进行数据源访问代码的修改, 而不会涉及上层调用代码, 这样就提高了软件的可维护性。

图4 DAO模式类图

在图4所示的DAO模式类图中, Business Object代表的是一个需用访问数据源的业务对象, 这个对象可以由EJB或JavaBean组件来实现。业务对象使用DAO模式来访问数据源。DataAccessObject包括接口和接口的实现类。接口中定义要访问数据源的抽象方法, 实现类中应用一种具体的数据源访问API来实现抽象方法。Transfer Object类代表了一个数据传输对象, 它负责在数据源和业务对象之间进行数据的封装和传输, 一般使用DTO(Data Transfer Object)模式实现

3.2 对象关系映射ORM(Object Relationship Mapping)设计模式

数据持久性之所以难以处理,是因为J2EE面向对象设计中使用的对象范例和关系数据库使用的关系范例这两种“文化”不匹配。对象范例基于软件工程的一些原理,例如耦合、聚合和封装:而关系范例则基于数学原理,特别是集合论的原理。两种不同的理论基础导致各自有不同的优缺点。对象范例侧重于从包含数据和行为的对象中构建应用程序,而关系范例则主要针对数据的存储。当为访问而寻找一种何时的方法时,这种“文化不匹配”的问题就成了主要的矛盾:使用对象范例,通过他们的关系来访问对象,而使用关系范例,则通过复制数据来连接表中的行。

虽然两种范例进过努力可以结合,但这种基本“文化”的差异导致结合效果不理想。有人提出对象数据以希望解决这个问题,但是,关系数据库技术已经发展得相当成熟,占据了数据库市场的90%以上的份额,对象数据库的普及尚需时日。ORM的出现作为两个体系的借口或者过渡层,为数据持久层设计提供了良好的解决方案,并迅速得到业界的认可。

3.3 ORM实现的四个级别

ORM有四种不同级别的具体实现,这四个级别的特性决定了一个好的ORM实现工具的设计标准。

3.3.1纯关系

整个应用程序,包括用户接口,都是根据关系模型和基于SQL的关系操作进行设计的。如果低水平的代码重用是可以容忍的,不考虑它对大型系统的不足,这种方法对于简单的应用不失为一种优秀的解决方案。直接的SQL可以在每一方面进行微调,但是存在缺乏可移植性和可维护性,这些缺点在应用程序需要长期运行的时候是非常突出的,而且这种类型的应用经常大量的使用存储过程,将业务层的许多工作移动到数据库中。

3.3.2轻量对象映射

实体作为类来表示,而类又被手工的映射到关系表。手工编码的SQL/JDBC使用众所周知的设计模式对业务逻辑进行了隐藏。这种方法非常普遍,对于那些只有少量实体的应用或者(那些)使用普通的元数据-驱动的数据模型的应用来说是很成功的。

3.3.3中等对象映射

这种应用是根据对象模型设计。SQL在编译时使用代码生成工具生成,或者在运行时由框架代码生成。对象间的关联由持续性机制支持,并且查询可能使用面向对象的表

达式语言指定。对象被持续层缓存。很多的ORM产品和自制的持续层至少支持这一级别的功能。它非常适合于包含一些复杂事物的中等规模的应用,特别是当不同的数据库产品间的移植性非常重要时,这些应用通常不适用存储过程。

3.3.4完全的对象映射

完全的对象映射支持复杂的对象模型:组合、继承、多态和“可达的持续性”。持续层实现了透明的持续性;持续类不继承任何特定的基类或必须实现特定的接口。高效的存储策略(懒惰和急切存取)和缓存策略都对应用透明的实现了。这一级别的功能很难由自制的持续层达到——它相当于数月或数年的开发时间。许多商业的和开源的Java ORM工具已经到达了这一级别的品质。

完全的对象-关系/映射工具需要处理一个相当长的问题列表,而Hibernate[7]正是这样的一个工具。目前,Hibernate是一种开源的ORM实现,作为ORM最好的开源工具,得到了众多程序员的用户和支持。

4、Hibernate

4.1 Hibernate简介

Hibernate是一个优秀的开源代码的Java对象持久层轻量级封装框架,它既可以用来在Java应用程序中取代大部分JDBC代码,也可以整合到J2EE系统中作为持久层框架。

Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,与App Server和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EJB不是一个范畴的东西,也不存在非此即彼的关系。Hibernate的兼容性于JDBC比密切关联的框架,所以Hibernate得兼容性与JDBC驱动和数据库都有一定的关系,但是和使用它的Java程序和App Server没有任何关系,也不存在兼容性问题。Hibernate不能用来直接和Enitiy Bean作对比,只有放在整个J2EE项目的框架中才能比较。并且及时是放在软件整体框架中来看,Hibernate也是作为JDBC的替代者出现的,而不是Entity Bean的替代者出现的。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库对象关系映射技术的发展与应用-1在线全文阅读。

对象关系映射技术的发展与应用-1.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/993969.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: