第1章 ORM框架概述
![第1章 ORM框架概述](https://img.360docs.net/imgbf/1mcgt3nmstyt9xvk2kp2rd3d7rga7lul-f1.webp)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章 ORM框架概述
到目前为止,我们已经学习Java技术所包含的JavaSE、JavaEE这两门技术。能够使用JavaEE进行一些企业级应用开发,这是作为Java软件开发工程师的必备技能。要掌握Hibernate,就要先了解持久层的相关概念和术语,本章从持久化的概念入手,先引出持久化对象,接着详述了解软件分层思想的发展过程,并由此可知Hibernate在软件分层体系结构中所处的位置及它的作用。
【本章学习目标】
▪掌握软件分层开发概念。
▪掌握对象持久化概念。
▪掌握对象关系映射ORM。
▪ASM与CGLIB动态代理。
【本章重点难点】
▪分层开发概念。
▪对象关系映射ORM。
▪什么是动态代理,及如何实现。
1.1持久层概述
分层结构是目前软件开发设计里的一种非常重要的思想。在开发中,把一个项目分
成三层来实现,注意,这三层的意思是把各个功能模块部分进行了归纳而形成的一个种概念。持久层就是在软件的三层体系结构基础上发展起来的,它以解决实体对象和对象关系
这两大领域之间存在的不匹配问题为目标,为应用程序与对象-关系型数据库之间提供了
一个成功的映射解决方案。本小节将围绕持久层来介绍一些相关概念,现在,我们先从持
久化对象来开始进行讲解。
1.1.1 持久化对象
到目前为止,我们知道了程序运行时的数据都是保存在计算机的内存中,也就是RAM
里面,但是内存的特点是:易失性、可读写,在计算机关机或断电后,内存中的数据也随
之丢失,那么,问题来了,我们的一些重要数据是需要长期保存的,以供以后使用,那么
如何解决?为解决这个问题,所以在计算机中引入了持久化的概念。
持久化(Persistent)指的是将内存中的数据进行永久性保存,基本上是保存到磁盘这
一些存储设备中。目前,几乎所有的应用系统都需要进行持久化数据。我们可想而之,如
果一个系统不需要或不能保存业务数据,那么这个系统基本上可以说没有什么实用价值。
因此,如何对项目中的业务数据进行持久化就非常重要了。从目前情况来看,项目的数据
持久化过程基本上是通过各种关系型数据库来完成的。大家都知道,目前比较流行的数据
库有:Oracle、MySQL、SQL Server、DB2…. 。
持久化对象就是指已经存储到数据库或磁盘中的数据。为了保证一个对象持久存储,
必须将其状态保存到非易失性的存储设备中持久化对象可以在创建它的程序的作用域之外
保持其自身的状态。不同的对象有不同的状态,状态数据都存放在对象的实例变量中。位于内存的堆栈空间中的对象在计算机关机或断电后会丢失,所以,我们为了永久的保存这
些对象的状态,并需要的时候能够再获得这个对象数据,就需要对它们进行持久化操作。
在Java中,我们通常采用以下三种方式对对象进行持久化:
➢序列化对象,将对象进行序列化,以二进制格式存入文本文件。
➢将对象持久化到XML文件中。
➢将对象持久化到数据库中,目前,采用最多的就是关系型数据库。
大家都知道,关系型数据库中遵循了一条重要原则就是”数据独立性”,即数据可以独
立于应用程序而存在。因此,数据可以比任何应用程序都存在得更久。同时,它的性能及
安全性也有保障。并且,不同的应用程序之间还可以共享这些数据。
前面两种方式,我们在JavaSE基础课程上都已经进行了学习,本书的重点是要学习第
三种方式,把应用程序中的数据持久到到数据库中去。
1.1.2分层体系结构和持久层
随着应用软件的不断发展,应用程序从简单变得越来越庞大,功能越来越多,业务也
更加的复杂。通过程序员的不停的总结,分层也成为了计算机软件设计中的一种重要思想。从单层结构发展到双层结构,双层结构分为应用层与数据库访问层,见图1.1。在双层结
构中,用户界面和业务逻辑控制都由应用层负责实现,数据库访问层(持久层)负责与数
据库进行交互。这样导致用户界面代码和业务逻辑代码混合在一起,产生了程序结构不清晰、维护困难等问题。同时,不懂编程的美工开发人员也无法参与到软件开发过程中。再
后来,我们把应用层再次进行细分,将用户界面的设计从业务逻辑中进行分离,形成单独
的一层——表示层,演变成三层结构。
经典的软件应用体系三层结构有三层:表示层、业务逻辑层、数据访问层(持久层),见图1.2所示。
图1.1 图1.2
各层主要功能如下:
➢表示层:提供了与用户进行交互的界面,作用是展示数据和收集数据。
➢业务逻辑层:完成业务逻辑处理,处理表示层提交的数据请求,并将要保存的数据提交给下层数据访问层。或根据表示的请求向底层数据访问层请求数据。
➢数据访问层(持久层):存储需要持久化的数据。数据库独立于应用程序,它只是提供了一种持久化的表现形式。
在上面的三层结构中,持久层对数据访问逻辑进行抽象,业务逻辑层通过持久层提供
的数据访问接口来访问底层数据库中的数据。这不仅将应用开发人员从底层操作中解放出来,更多的去关注业务处理,同时,由于业务逻辑与数据访问分离开来,使得开发人员分
工更加细化。某些数据库比较精通的开发人员可以专门负责持久层的数据库访问操作,而
对业务流程比较熟悉的开发人员可以避开繁琐的数据库访问细节,只实现业务逻辑。这样,才更加有利于团队合作开发,有利于软件的健壮性,可维护性。
1.1.3持久层实现
持久层的实现是和数据库紧密相连的,在Java领域中,访问数据库的技术通常都采用JDBC,至于JDBC,我们在前面的课程中已经进行了学习,这里不做详述。JDBC使用灵活