第1章ORM框架概述

上传人:枫** 文档编号:491308428 上传时间:2023-03-07 格式:DOC 页数:17 大小:189KB
返回 下载 相关 举报
第1章ORM框架概述_第1页
第1页 / 共17页
第1章ORM框架概述_第2页
第2页 / 共17页
第1章ORM框架概述_第3页
第3页 / 共17页
第1章ORM框架概述_第4页
第4页 / 共17页
第1章ORM框架概述_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《第1章ORM框架概述》由会员分享,可在线阅读,更多相关《第1章ORM框架概述(17页珍藏版)》请在金锄头文库上搜索。

1、第1章ORM框架概述到目前为止,我们已经学习 Java技术所包含的JavaSE、JavaEE这两门技术。能够使 用JavaEE进行一些企业级应用开发,这是作为Java软件开发工程师的必备技能。要掌握Hibernate ,就要先了解持久层的相关概念和术语,本章从持久化的概念入手,先引出持 久化对象,接着详述了解软件分层思想的发展过程,并由此可知 Hibernate 在软件分层体 系结构中所处的位置及它的作用。本章学习目标 】? 掌握软件分层开发概念。? 掌握对象持久化概念。? 掌握对象关系映射 ORM。? ASM与 CGLIB动态代理。本章重点难点 】? 分层开发概念。? 对象关系映射 ORM。

2、? 什么是动态代理 , 及如何实现1.1 持久层概述 分层结构是目前软件开发设计里的一种非常重要的思想。在开发中,把一个项目分 成三层来实现,注意,这三层的意思是把各个功能模块部分进行了归纳而形成的一个种概 念。持久层就是在软件的三层体系结构基础上发展起来的,它以解决实体对象和对象关系 这两大领域之间存在的不匹配问题为目标,为应用程序与对象-关系型数据库之间提供了一个成功的映射解决方案。本小节将围绕持久层来介绍一些相关概念,现在,我们先从持 久化对象来开始进行讲解。1.1.1 持久化对象到目前为止,我们知道了程序运行时的数据都是保存在计算机的内存中,也就是 RAM 里面,但是内存的特点是:易失

3、性、可读写,在计算机关机或断电后,内存中的数据也随 之丢失,那么,问题来了,我们的一些重要数据是需要长期保存的,以供以后使用,那么 如何解决?为解决这个问题,所以在计算机中引入了持久化的概念。持久化(Persistent)指的是将内存中的数据进行永久性保存,基本上是保存到磁盘这 一些存储设备中。目前,几乎所有的应用系统都需要进行持久化数据。我们可想而之,如 果一个系统不需要或不能保存业务数据,那么这个系统基本上可以说没有什么实用价值。 因此,如何对项目中的业务数据进行持久化就非常重要了。从目前情况来看,项目的数据 持久化过程基本上是通过各种关系型数据库来完成的。大家都知道,目前比较流行的数据

4、库有:Oracle、MySQL、SQL Serve、DB2.。持久化对象就是指已经存储到数据库或磁盘中的数据。为了保证一个对象持久存储, 必须将其状态保存到非易失性的存储设备中持久化对象可以在创建它的程序的作用域之外 保持其自身的状态。不同的对象有不同的状态,状态数据都存放 在对象的实例变量中。位 于内存的堆栈空间中的对象在计算机关机或断电后会丢失,所以,我们为了永久的保存这 些对象的状态,并需要的时候能够再获得这个对象数据,就需要对它们进行持久化操作。在Java中,我们通常采用以下三种方式对对象进行持久化:? 序列化对象,将对象进行序列化,以二进制格式存入文本文件。? 将对象持久化到 XML

5、 文件中。? 将对象持久化到数据库中,目前,采用最多的就是关系型数据库。大家都知道,关系型数据库中遵循了一条重要原则就是 ”数据独立性 ”,即数据可以独 立于应用程序而存在。因此,数据可以比任何应用程序都存在得更久。同时,它的性能及 安全性也有保障。并且,不同的应用程序之间还可以共享这些数据。前面两种方式,我们在 JavaSE基础课程上都已经进行了学习,本书的重点是要学习第 三种方式,把应用程序中的数据持久到到数据库中去。1.1.2 分层体系结构和持久层随着应用软件的不断发展,应用程序从简单变得越来越庞大,功能越来越多,业务也 更加的复杂。通过程序员的不停的总结,分层也成为了计算机软件设计中的

6、一种重要思想。 从单层结构发展到双层结构,双层结构分为应用层与数据库访问层,见图1.1。在双层结构中,用户界面和业务逻辑控制都由应用层负责实现,数据库访问层(持久层)负责与数 据库进行交互。这样导致用户界面代码和业务逻辑代码混合在一起,产生了程序结构不清 晰、维护困难等问题。同时,不懂编程的美工开发人员也无法参与到软件开发过程中。再后来,我们把应用层再次进行细分,将用户界面的设计从业务逻辑中进行分离,形成单独 的一层表示层,演变成三层结构。经典的软件应用体系三层结构有三层:表示层、业务逻辑层、数据访问层(持久层), 见图1.2所示。表示层1T持5层V数据庫图1.1各层主要功能如下:? 表示层:

7、提供了与用户进行交互的界面,作用是展示数据和收集数据。? 业务逻辑层:完成业务逻辑处理,处理表示层提交的数据请求,并将要保存的数 据提交给下层数据访问层。或根据表示的请求向底层数据访问层请求数据。? 数据访问层(持久层):存储需要持久化的数据。数据库独立于应用程序,它只 是提供了一种持久化的表现形式。在上面的三层结构中,持久层对数据访问逻辑进行抽象,业务逻辑层通过持久层提供 的数据访问接口来访问底层数据库中的数据。这不仅将应用开发人员从底层操作中解放出 来,更多的去关注业务处理,同时,由于业务逻辑与数据访问分离开来,使得开发人员分 工更加细化。某些数据库比较精通的开发人员可以专门负责持久层的数

8、据库访问操作,而 对业务流程比较熟悉的开发人员可以避开繁琐的数据库访问细节,只实现业务逻辑。这样, 才更加有利于团队合作开发,有利于软件的健壮性,可维护性。1.1.3持久层实现持久层的实现是和数据库紧密相连的,在Java领域中,访问数据库的技术通常都采用JDBC至于JDBC我们在前面的课程中已经进行了学习,这里不做详述。JDBC使用灵活 而且访问速度快,性能好,但是 JDBC不仅要操作对象,还需要操作关系,并不是完全面 向对象编程,同时,开发人员还要编写大量的重复的数据库操作代码。近年来涌现出许多新的持久层框架,这些框架为持久层的实现提供了更多的选择,同 时,也简化了繁琐、重复的代码。目前,比

9、较流行的持久层框架包括:Hibernate、 iBatis、MyBites、JDO Nhibernate、Linq To SQL :。1.2 对象关系映射面向对象的开发方式是现今企业级应用开发中的主流开发方法,关系型数据库是企业 级应用环境中永久存放数据的主要方式。在软件开发过程中,对象 和关系数据是业务实体 的两种不现的表现形式,业务实体在内存中的存在形式为对象,要想将业务实体永久存储 则只能将其放入关系型数据库中,在数据库中它以关系型数据的形式存在。由面向对象基 本理论知道,内存中的对象之间是存在着关联和继承关系的,而在关系型数据库中,数据 之间无法直接表达多对多的关联和继承关系。此时,对

10、象 关系映射组件就应运而生了。对象关系映射(英语: Object Relation Mapping,简称 ORM,或O/RM,或O/Rmappi ng),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的 转换。从效果上说,它其实是创建了一个可在编程语言里使用的 “虚拟对象数据库 ”。面 向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据 库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象, 对象关系映射技术应运而生。对象关系映射提供了概念性的、易于理解的模型化数据的方法。ORM方法论基于三个核心原则:? 简单:以最基本的形

11、式建模数据。? 传达性:数据库结构被任何人都能理解的语言文档化。? 精确性:基于数据模型创建正确标准化的结构。典型地建模者通过收集来自那些熟悉应用程序但不熟练的数据建模者的人的信息开发 信息模型。建模者必须能够用非技术企业专家可以理解的术语在概念层次上与数据结构进 行通讯。建模者也必须能以简单的单元分析信息,对样本数据进行处理。ORM 专门被设计为改进这种联系。回想以前开发一个应用程序的时候 (不使用ORM),我们写了不少数据访问层的代码,用 来从数据库保存,删除,读取对象信息,等等。并且在DDL中也写了很多的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的。如果打开你最近

12、的程序,看看 DAL代码,你肯定会看到很多近似的通用的模式。我们以保 存对象的方法为例,你传入一个对象,为Statement对象添加Parameter,把所有属性和对象对应,获取 Conncation 对象,然后 Statement 执行操作方法。对于每个对象都要重复 的写这些代码。除此之外,还有更好的办法吗?有,弓I入一个ORM。实质上,一个 ORM会为你生成DALo与其自己写DAL代码,不如用 ORM。你用ORM实现数据的增、删、改、查,ORM负责生成SQL,你只需要关心对象就好。简单的说:ORM相当于中继数据。具体到产品上,例如Hibernate、Entity Framework、MyB

13、ites、Nhibernate。DLINQ中实体类的属性Table就算是一种中继数据。一般的 ORM包 括以下四部分:? 一个对持久类对象进行 CRUD操作的API;? 一个语言或 API 用来规定与类和类属性相关的查询;? 一个规定 Mapping MetaData 的工具;? 一种技术可以让 ORM 的实现同事务对象一起进行 DIRTYCHECKING, LAZY ASSOCIATIONFETCHING以及其他的优化操作。ORM 把应用程序世界表示为具有角色(关系中的部分)的一组对象(实体或值)。ORM 有时也称为基于事实的建模,因为它把相关数据描述为基本事实。这些事实如果分 割为再小的事

14、实就会丢失信息。例如:人有电话人住在某个地方人生于某个日期人在某个日期被雇佣ORM 提供的不只是描述不同对象间关系的一个简单而直接的方式。ORM 还提供了灵活性。使用 ORM 创建的模型比使用其它方法创建的模型更有能力适应系统的变化。另外, ORM 允许非技术企业专家按样本数据谈论模型,因此他们可以使用真实世界的数据验证 模型。因为 ORM 允许重用对象,数据模型能自动映射到正确标准化的数据库结构。ORM模型的简单性简化了数据库查询过程。使用ORM查询工具,用户可以访问期望数据,而不必理解数据库的底层结构。本质上,ORM完成的是将数据从一种表现形式转换为另一种表现形式。因此,对象一关系映射系统

15、一般以中间件的形式存在,主要实现程序对象到关系数据库数据的关系映射。Hibernate就是一种实现了 ORM的框架。如下图1.3所示。实体对象(业务数据)过稈对象(业务逻辑)持久化泾ORM纽件)图1.31.3实体对象生命周期大家都知道,在Java编程过程中,一个对象通过new关键字创建后,这个对象就会驻扎在内存区域之中,一直要到应用程序结束或设置对象为NULL,此对象才会被回收机制进行回收。那么,在 Hibernate中,我们所操作的实体对象的生命周期又是什么样子的 呢?其实,实体对象的生命周期在Hibernate应用中是一个很关键的概念,正确的理解实体对象的生命周期将对我们应用Hibernate做持久层设计起到很大的作用。而所谓的实体对象的生命周期就是指实体对象由产生到被垃圾回收机制回收的一段过程,在这过程中我 们需要理解的就是实体对象生命周期中的三种状态。1.3.1 自由状态(Transient)也叫瞬时状态,所谓的瞬时状态是指对象被创建,自由的存储在内存之中,与数据库 中的记录无关,也没有被纳入Hibernate的实体管理容器之中。1. Pers on pers on = new Pers on();2. person.setName(” 张明);3. /此时的person对象处

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号