Java Web应用开发技术 教学课件 任文娟Hibernate框架的应用_第1页
Java Web应用开发技术 教学课件 任文娟Hibernate框架的应用_第2页
Java Web应用开发技术 教学课件 任文娟Hibernate框架的应用_第3页
Java Web应用开发技术 教学课件 任文娟Hibernate框架的应用_第4页
Java Web应用开发技术 教学课件 任文娟Hibernate框架的应用_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在线教务辅导网: :/教材其余课件及动画素材请查阅在线教务辅导网QQ:349134187 或者直接输入下面地址:第8章 Hibernate框架的根本应用本章导航本章主要介绍Hibernate框架的根底知识及与Struts的结合使用。通过本章的学习,将帮您解决如下几个问题: Hibernate框架结构是怎样的? Hibernate的工作原理是怎样的? Hibernate有哪些常用的API? 如何搭建Hibernate开发环境? 如何利用Hibernate开发应用程序? 如何对Struts与Hibernate进行整合开发? 本章目标 通过本章的学习,读者应到达如下学习目标: 了解Hibernate

2、的框架结构; 掌握Hibernate的工作原理; 学会如何应用Hibernate框架进行开发; 学会Struts与Hibernate整合开发。本章内容Hibernate框架简介1简单的Hibernate应用程序2Hibernate的体系结构3MyEclipse中开发Hibernate应用程序4Struts整合Hibernate开发1158.1 Hibernate简介1. 持久化层简介在目前的企业级应用系统设计中,MVC为主要的系统架构模式。MVC中的M层包含了复杂的业务逻辑、数据逻辑以及数据存取机制,如JDBC的连接、SQL生成和Statement创立,还有Result结果集的读取等。目前我们

3、采用的是面向对象的编程思想,而数据库模型通常是关系数据库,这两者的思考方式不一样,这必然产生了开发过程中的不协调。为了屏蔽底层数据库的操作,以面向对象的方式提供给开发者操作数据库中数据的接口。可以把数据访问细节和业务逻辑分开,把数据访问作为单独的持久化层。该层负责应用到数据库的数据存储,也负责数据的检索和更新。客户层Web层业务层客户层Web层业务层持久化层数据库层数据库层从业务层别离出的持久化层 持久化层封装了数据访问细节,为业务逻辑层提供了面向对象的API。完善的持久化层应该到达以下目标:代码可重用性高,能够完成所有的数据库访问操作。如果需要的话,能够支持多种数据库平台。具有相对独立性,当

4、持久化层的实现发生变化,不会影响上层的实现。那么,如何实现持久化层呢?对于复杂的数据模型,直接通过JDBC编程来实现健壮的持久化层需要有专业的知识,对于企业应用的开发人员,花费大量时间从头开发自己的持久化层不是很可行。目前在持久化层领域,已经出现了许多优秀的ORMObject Relation Mapping,对象关系映射软件,有的是商业性的,有的是开发源代码的。Hibernate就是一种越来越受欢送的开发源代码的ORM软件。ORM软件具有中间件的特性。中间件是在应用程序和系统之间的连接管道。Hibernate可以看成是连接Java应用程序和关系数据库的管道。Hibernate作为中间件,可以

5、为任何一个需要访问关系数据库的Java应用效劳。中间件的另一个特点是具有透明性,作为Hibernate的使用者,无需关心它是如何实现的,只需要知道如何访问它的接口就行了。框架简介Hibernate是一个功能强大的、高效率的O/R持久化查询工具。它对JDBC进行轻量级的对象封装,使Java程序员可以随心所欲地使用对象编程思想来操纵数据库。它提供一个易用的框架来实现把一个面向对象的域模型映射到一传统的关系数据库。它不仅负责从Java类到数据库表格(以及来自Java数据类型的SQL数据类型)的映射,而且还提供数据查询和检索能力,并能大大减少花在SQL和JDBC手工数据处理上的开发时间。另外,Hibe

6、rnate拥有一种功能非常强大的查询语言(HQL,Hi bernateQuery Language ),这种语言与SQL非常相似,便于开发人员掌握。更重要的是,HQL完全是面向对象的,查询的是持久对象,而不是数据库的记录。可以用它来支持多态、继承、关联等关系。8.2 一个简单的Hibernate应用程序 为了让大家对Hibernate应用程序有个简单的了解,本章将从一个相对简单的例子出发,来阐述Hibernate的开发方法,为了阐述Hibernate的一些重要思想,在该例如程序中,将创立一些消息对象,消息对象中包含消息标题和消息内容,创立对象后将其保存在数据库中,然后对它们进行查询。 的下载与

7、安装 Hibernate版本差异不大,在此使用,下载时只需要下载Hibernate核心局部即可,windows平台下载zip包,Linux平台下载tar包。下载后得到压缩文件,将该文件解压后,会看到在该路径下有一个的压缩文件,该文件是hibernate的核心类库文件,该路径下还有一个lib文件夹,该文件夹中包含了Hibernate编译和运行的第三方类库。将文件复制到需要Hibernate的应用中,如果应用需要其他第三方类库,那么还需要复制其他第三方类库。如果是Web应用,那么需要将lib文件夹下的文件复制到WEB-INF/lib路径下。2. Hibernate应用开发实例 Hibernate框

8、架作为一个ORM的具体实现,是Java应用和关系数据库之间的桥梁,主要用来实现Java对象持久化操作,在Java应用中使用Hibernate主要有以下几个步骤: 1创立持久化类; 2创立对象-关系映射文件; 3创立Hibernate配置文件; 4使用Hibernate API编写访问数据库的业务逻辑代码。具体操作见课本 8.3 Hibernate的体系结构及工作原理 8.3.1 Hibernate体系结构 图8-2 Hibernate的整体架构 图8-3 Hibernate运行时体系结构图 Hibernate的接口主要有4类: 1. 提供数据库访问操作的接口,如保存、更新、删除和查询,这样的接

9、口有Session、Transaction和Query接口; 2.提供配置Hibernate的接口,有Configuration接口; 3.回调接口:使得应用程序能够接受Hibernate内部的事件,并做出相应的反响,这样的接口有Interceptor、Lifecycle和Validatable接口; 4.用户扩展接口,有UserType、CompositeUserType和IdentifierGenerator接口,如果需要,用户可以扩展这些接口。 Hibernate的核心接口1. Configuration接口: 配置Hibernate并启动Hibernate,Hibernate应用使用它

10、来配置来指定对象关系映射文件的位置并动态配置Hibernate的属性,然后创立SessionFactory对象实例。 Hibernate运行时需要获取一些底层实现的根本信息,其中几个关键属性如下:数据库的URL连接数据库的用户名和密码连接数据库的驱动指定连接数据库的类别,即dialect,数据库方言这些属性可以在Hibernate配置文件或中进行设定,应用程序是通过Configuration对象来实现对配置文件的读取的,我们调用如下代码:Configuration configuration=new );Hibernate会自动在指定的路径下寻找Hibernate配置文件并将其加载到内存中,作

11、为以后继续操作的根底配置Hibernate将通过Configuration对象来读取加载对象关系映射文件到内存中,需要注意的是,一个Configuration对象只能代表一个数据库配置信息。Configuration对象除了有读取配置文件的功能外,还能创立SessionFactory对象。Configuration对象只有在Hibernate初始化的时候才需要创立,当使用Configuration创立了SessionFactory的实例后,其配置信息已经绑定在它返回的SessionFactory对象实例中。因此,一般情况下,得到SessionFactory对象后,Configuration对象

12、的使命就结束了Configuration接口的重要方法:Public configuration configure(String resource)throws HibernateException在参数中指定要加载的XML格式的配置文件Public SessionFactory buildSessionFactory()throws HibernateException2. SessionFactory接口: SessionFactory初始化Hibernate,充当数据存储源的代理,并创立Session实例。 SessionFactory有如下特点:它是线程平安的,这意味着应用的多个线程

13、可以访问同一个SessionFactory实例;SessionFactory是重量级的,不能随便创立或者销毁它。一个数据存储源对应着一个SessionFactory实例。SessionFactory会占用较大的缓存,因为它需要存储对象关系映射文件以及预定义的SQL语句。可以为Hibernate安装一个缓存插件,称为Hibernate的二级缓存,用来存储工作单元访问过的数据。 SessionFactory负责生成Session对象。可以通过Configuration实例构建:Configuration conf=new Configuration().configure();SessionFac

14、tory sessionFactory=;Configuration对象会根据当前的配置信息,生成SessionFactory对象。SessionFactory对象一旦构造完毕,即被赋予特定的配置信息,即以后配置的改变不会影响到创立的SessionFactory对象。如果需要使用基于改动后的配置的SessionFactory对象,需要从新的Configuration对象生成SessionFactory对象。 接口:Session接口也称为持久化管理接口,提供保存、更新、删除、加载和查询等数据库操作。Session接口不是线程平安的,要防止或采用较好的策略来处理多个线程共享同一个Session的

15、情况。Session接口是轻量级的。可以创立或销毁多个Session对象。每个Session对象都有自己的缓存,称为第一级缓存,存储当前工作单元加载的实体对象。 接口:封装了JDBC API、JTA和CORBA API,提供统一的Transaction接口,负责事务处理的操作;和Criteria接口:用于向数据库查询对象并控制执行查询的过程。Query接口包装了HQLHibernate Query Language查询语句,HQL与SQL类似,但它是面向对象的,引用类及类的属性名。Criteria接口完全封装了字符串形式的查询语句,比Query更加面向对象,擅长执行动态查询。8.3.3 Hib

16、ernate工作原理Configuration cfg = new Configuration().configure();Session s=sf.openSession(); mit(); s.close(); 通过Session接口提供的各种方法操纵对数据库的访问提交数据库操作结果关闭Session连接结束利用上面创建的Session实例创建事务操作接口Transaction的一个实例Transaction tx =s.beginTransaction(); 包含了Hibernate所有运行期参数SessionFactory sf=cfg.buildSessionFactory();开始

17、启动hibernate构建Configuration实例,初始化该实例中的所有变量加载hibernate.cfg.xml配置文件到该实例(内存)通过hibernate.cfg.xml文件中的mapping节点配置并加载hbm.xml文件至该实例(内存)利用上面的Configuration实例创建一个SessionFactory实例利用上面创建的SessionFactory实例创建连接从流程图中可以看出,Hibernate的执行过程如下: 1配置好hibernate的配置文件和与类对应的配置文件后,启动效劳器。 2效劳器通过实例化Configeration对象,读取文件的配置内容,并根据相关的需

18、求建好表或者和表建立好映射关系。 3通过实例化的Configeration对象创立一个sessionFactory实例。 4通过sessionFactory实例可以创立session对象。 5得到session之后,便可以开始一个事务,然后就可以通过Session接口提供的各种方法操纵对数据库的访问。除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现。 6操作完成后,提交数据库操作结果,关闭Session连接。 8.4 在MyEclipse中开发Hibernate应用程序 8.4.1 MyEclipse中为工程添加Hibernate支持步骤:1.创立数据库连接 2.添加Hibernate支持8.4.2 Hibernate应用实例 【实例8-2】本小节将仍然以节中介绍的实例为根底,在MyEclipse中使用Hibernate框架来实现对news数据库表的查询、添加、删除和修改操作。 1.持久化类和映射文件的生成 配置文件 3.编写访问数据库的业务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论