清华it javaee教学ppt9

上传人:第*** 文档编号:49495477 上传时间:2018-07-29 格式:PPT 页数:25 大小:1.20MB
返回 下载 相关 举报
清华it javaee教学ppt9_第1页
第1页 / 共25页
清华it javaee教学ppt9_第2页
第2页 / 共25页
清华it javaee教学ppt9_第3页
第3页 / 共25页
清华it javaee教学ppt9_第4页
第4页 / 共25页
清华it javaee教学ppt9_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《清华it javaee教学ppt9》由会员分享,可在线阅读,更多相关《清华it javaee教学ppt9(25页珍藏版)》请在金锄头文库上搜索。

1、第九章Hibernate对象持久化概述 课程目标课程目标q数据持久化的介绍 qORM的概念及实现 q对象-关系映射的概念 qHibernate的体系结构 q熟悉持久化及Java的数据库处理技术 q了解对象-关系映射的概念 q能够创建Hibernate应用程序 体验项目 程序实现的功能:该项目基于Struts框架,并以Hibernate作为数据持久 化的中间件,实现保存学生成绩的功能,并在显示页面中将所有学生的成绩 信息打印出来。 程序运行的过程如下所示:(1)访问“添加学生成绩信息”页面,填写学生成绩信息,如图9-1所示: 图8-1 选择需要上传的文件 (2)学生信息填写完成后,点击“提交”按

2、钮。将数据保存至数据库,并将 视图转发至显示信息页面,如图9-2所示: 图9-2 显示信息页面 持久化介绍 持久化技术 面向对象的开发方法已经成为开发方法中的主流。可我们都知道,对象 只能保存在内存中,一旦发生断电或其他突发性状况致使计算机不能正常工 作时,内存中所保存的数据将会全部丢失。为了达到数据永久保存的目的, 就必须对数据进行持久化操作。 数据的持久化操作,一般情况下都是将数据“固化”到磁盘中。到目前为 止,有三种媒介常用于永久性的保存数据,一是格式化的文本文件,二是 XML文件,三则是当今最流行的数据库系统了。 关系型数据库存放的只能是关系数据,而非面向对象的数据。对象与关 系是业务

3、实体的表现形式,业务实体在内存中表现为对象,而在数据库中则 表现为关系数据。内存中的对象之间存在着关联与继承的关系,而在数据库 中,关系数据是无法直接表达多对多的关联与继承关系的。 通过Java语言实现数据的持久化操作,最常见的就是通过JDBC编程进 行数据库的操作。JDBC编程访问数据库可以说是访问数据库的方法中最原 始、最直接的方法了。到目前为止,相信同学们都已经熟练的掌握JDBC编 程。使用这种方式访问数据库时,虽然效率较高,但同时它又需要在程序中 大量的嵌套SQL语句,使得以后在程序遇到问题需要维护或升级时,变得比 较麻烦。虽然我们有时可以把访问数据库的操作封装起来,并向外部提供 AP

4、I供业务层调用,但如果关系数据模型非常复杂,那么直接通过JDBC编程 来实现持久化层需要有非常专业的知识,同时也是件非常浪费时间的工作。 但是现在不必担心JDBC编程带来的麻烦了。在目前持久化层领域中, 许多出色的持久化层中间件脱颖而出,成为应用开发持久化技术的好帮手。 例如我们比较关心的非商业化的Hibernate,还有商业化的TopLink等。 Hibernate中间件是一个基于Java的、开源的持久化中间件,它对JDBC进行 了轻量级的封装。同时还提供了ORM映射、数据查询和数据缓存等功能。我 们可以很方便的通过Hibernate API进行数据库操作。 Java的数据库处理技术 持久层

5、技术 持久化是将内存中的数据保存至磁盘中的操作,而持久化层则是软件 开发模型领域的一个基本概念。 随着计算机软件技术的发展,应用软件的体系结构也由最初的单层结 构向双层、三层甚至多层结构发展。最初的单层结构软件一般采用文件系 统来保存数据。 双层软件模型实现了数据层与应用层的分离。其中应用层只负责接收 用户输入的数据,然后进行业务逻辑的处理以及将处理后的结果返回给用 户等工作。而数据层则只负责数据的持久化操作,保存业务中的持久化数 据。双层体系的软件结构模型如图9-3所示: 应用层数据层图9-3 双层体系结构模型 为什么使用Hibernate?在编写DAO层代码时,容易出现哪些问题?思考:这部

6、分代码规 律性很强,是否可以 采用“通用”的方法“ 集中”解决?代码繁琐 容易出错纯“体力”劳动 工作量大 占用大量开发时间三层体系结构的模型分为表示层、业务逻辑层与数据层。实际上它是把 双层结构中的应用层划分为了表示层与业务逻辑层。 表示层:提供与用户进行交互(显示与收集数据)的界面。 业务逻辑层:用于进行各种业务逻辑的处理,如验证表单数据、保 存数据到数据库等操作。 数据层:负责存放和管理应用的持久性业务数据。三层体系结构的软件模型分离了显示逻辑与业务逻辑,使得程序的可 读性大大增加,同时降低了程序开发的复杂度。三层体系结构特别适合用 于Web应用程序的开发,也是当前最流行的应用软件结构。

7、图9-4代表了三 层体系结构的软件模型: 表示层数据层业务逻辑 层图9-4三层体系结构模型 目前,也有一些开发人员使用四层式的软件开发模式,该模式进一步将 三层模式中的业务逻辑层分离出一个单独的持久层,进行数据的持久化操作 。一般来说,这种开发模式对大型的软件项目还是非常有用的。以下是四层 体系结构模型的分析: 表示层:提供与用户进行交互的界面。业务逻辑层:进行软件核心业务逻辑的处理。持久层:用于进行对象的持久化操作。 数据层:用于保存持久化数据。ORM概念与实现对象-关系映射的概念 ORM(Object Relational Mapping)的中文意思为对象-关系映射,它 是一种解决面向对象

8、与关系数据库存在的不匹配的技术。简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动 持久化到关系数据库中。从本质上来讲就是将数据从一种形式转换为另一种 形式。 字母O表示“对象”(Object),而R则表示“关系”(Relational)。几乎 在所有的程序中,都存在对象关系数据库。在业务逻辑层和用户界面层中, 程序是面向对象的。当对象信息发生变化时,我们就需要把对象的信息保存 到关系数据库中。 对象-关系映射成功运用在不同的面向对象持久层产品中,如:Torque ,OJB,Hibernate,TopLink,Castor JDO,TJDO等。 一般的OR

9、M包括以下四部分: 一个对持久类对象进行CRUD操作的API。 一个语言或API用来规定与类和类属性相关的查询。 一个规定mapping metadata的工具。 一种技术可以让ORM的实现同事务对象一起进行dirty checking,lazy association fetching以及其他的优化操作。 流行的ORM中间件产品 产品名网站支持Apache OJBhttp:/db.apache.org/ojb/Cayennehttp:/objectstyle.org/cayenne/Jaxorhttp:/Hibernatehttp:/www.hibernate.orgiBatishttp:/

10、jRelationalFrameworkhttp:/Miragehttp:/itor.cq2.org/en/oss/mirage/toonSMYLEhttp:/www.drjava.de/smyleTopLinkhttp:/ 产品,如下表所示: Hibernate概述 Hibernate在应用中的位置 Hibernate是一个开放源代码的对象-关系映射框架。它对JDBC进行了 非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思想 来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java 的客户端程序实用,也可以在Servlet/JSP的Web应用中使

11、用 ,Hibernate可 以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。应用(Application)Hibernate持久化对 象Hibernate属性 文件Hibernate映 射文件数据库图9-5 Hibernate应用程序的结构 Hibernate是当今最流行的ORM中间件。Hibernate的作用是实现持久 化对象和数据库中表之间的映射,它处于应用程序与数据库之间,相当于 一个持久化对象和数据库中数据的一个转换平台。Hibernate持久化过程需要配置文件来支持。当使用Hibernate时,需 要创建与数据库中的表相对应的持久化对象,然后再通过映射文件将持久 化对

12、象中的属性与数据库表中的字段对应起来。这样,才能通过这些持久 化对象完成对数据库表中数据的添、删、改、查等操作。 Hibernate主要包括以下三个组件: 1链接管理组件Hibernate的连接管理服务提供了高效的数据库连接管理。数据库连接是 和数据库进行通信的唯一渠道,建立和关闭一个数据库连接需要耗费很大的 资源。所以现在的应用程序都采用连接池的方法来管理与数据库的连接,避 免重复的连接与关闭数据库。 2事务管理组件事务管理是数据库应用程序中需要特别处理的工作。通过事务,能够一 次执行多个SQL语句,而且能保证这些语句都能执行成功或者都不执行。3对象/关系映射组件对象/关系映射技术可以实现从

13、对象模型到数据库中关系模型的映射工作 。通过这一技术,Hibernate实现了对象的持久化操作。 Hibernate的体系结构 Hibernate是非常灵活的,它提供了多种运行时的结构组成方案。接下 来将给大家详细介绍Hibernate的体系结构。Hibernate的体系结构分为“轻型” 与“全面型”。“轻型”体系结构方案要求应用程序提供自己的JDBC连接并管 理自己的事务。这种方案使用了Hibernate API的最小子集。图9-6表示了 Hibernate“轻型”体系结构: 图9-6 Hibernate“轻型”的体系结构 Hibernate“全面型”的体系结构最大程度上完成了对持久层功能的

14、封装 ,也使得在开发中所付出的工作量最少。“全面型”的体系结构方案,将应 用层从底层的JDB/JTA API中抽象出来的,而ate来处理这些细节。图9-7表 示了Hibernate“全面型”的体系结构: 应用(Application)Transient ObjectsSessionFactory SessionJDBCJNDIJTA数据库Persistent ObjectsTransaction TransactionFa ctoryConnection Provider让Hibern图9-7 Hibernate“全面型”的体系结构我们来分析图中各个对象的定义: SessionFactory

15、(org.hibernate.SessionFactory)针对单个数据库映射关系经过编译后的内存镜像,是线程安全的。它是 生成Session的工厂,本身要用到ConnectionProvider。该对象可以在进程或集 群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存。 Session (org.hibernate.Session)Session是Hibernate进行持久化操作的基础,所有的持久化操作都是在 Session的基础上完成的。 Session是Hibernate持久化管理器的核心,提供了 一系列的持久化操作的方法。如:save、update、delete和find等。另

16、外 Session还持有一个针对持久化对象的一级缓存,在遍历持久化对象或者根据 持久化标识查找对象时使用。 持久化对象及其集合带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。 这些对象可以是普通的JavaBeans/POJO,唯一特殊的是它们正与(仅仅一个 )Session相关联。这个Session被关闭的同时,这些对象也会脱离持久化状态 ,可以被应用程序的任何层自由使用。 瞬态(transient)以及脱管(detached)的对象及其集合 目前没有与Session相关联的持久化类的实例。它们可能是在被应用程序 实例化后,尚未进行持久化的对象。也可能是因为实例化它们的Session已经 被关闭而

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

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