第4章hibernate基础剖析

上传人:今*** 文档编号:107997792 上传时间:2019-10-22 格式:PPT 页数:66 大小:4.59MB
返回 下载 相关 举报
第4章hibernate基础剖析_第1页
第1页 / 共66页
第4章hibernate基础剖析_第2页
第2页 / 共66页
第4章hibernate基础剖析_第3页
第3页 / 共66页
第4章hibernate基础剖析_第4页
第4页 / 共66页
第4章hibernate基础剖析_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《第4章hibernate基础剖析》由会员分享,可在线阅读,更多相关《第4章hibernate基础剖析(66页珍藏版)》请在金锄头文库上搜索。

1、第4章 Hibernate基础,使用Hibernate的动机,Hibernate应用基础,Hibernate关系映射,4.1 使用Hibernate的动机,4.1.1 Hibernate概述 1Hibernate与ORM ORM(Object-Relation Mapping,对象关系映射)是用于将对象与对象之间的关系对应到数据库表与表之间关系的一种模式。 ORM系统一般以中间件的形式存在,主要实现程序对象到关系数据库表的映射。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的封装,使得Java EE程序员可以随心所欲地使用对象编程思维来操纵关系数据库。 用H

2、ibernate将本书TEST数据库的userTable表映射为UserTable对象,如图4.1所示,这样在编程时就可直接操作UserTable对象来访问数据库了。,4.1.1 Hibernate概述,2Hibernate体系结构 Hibernate作为ORM的中间件,通过配置文件(hibernate.cfg.xml或hibernate.properties)和映射文件(*.hbm.xml)把Java对象或持久化对象(Persistent Object,PO)映射到数据库中的表,程序员编程则是通过操作PO对表进行各种操作。 Hibernate体系结构如图4.2所示。,4.1.2 简单Hibe

3、rnate应用,1举例 【实例五】采用JSP+Hibernate方式开发一个Web登录程序。 要求:参照【实例二】(2.2.4节),改用Hibernate生成userTable表映射来实现数据库的持久化面向对象操作,即是以Hibernate自动生成原本要靠手工编写的JavaBean和完成原来需要手工编写的JDBC类的功能。 (1)创建Java EE项目 新建Java EE项目,项目命名jsp_hibernate。在项目src下创建两个包:org.easybooks.test.factory和org.easybooks.test.model.vo。,4.1.2 简单Hibernate应用,(2)

4、添加Hibernate框架 右击项目jsp_hibernate,选择菜单【MyEclipse】【Project Facets Capabilities】【Install Hibernate Facet】启动向导,出现如图4.3所示的窗口,选择Hibernate版本为4.1。,4.1.2 简单Hibernate应用,单击【Next】按钮,进入如图4.4所示的界面,创建Hibernate配置文件,同时创建SessionFactory类,类名默认HibernateSessionFactory,存放于org.easybooks.test.factory包中。,4.1.2 简单Hibernate应用,单

5、击【Next】按钮,进入如图4.5所示的界面,指定Hibernate所用数据库连接的细节。由于在前面(【实例一】(1.3.2节)第(2)步)已经建好了一个名为sqlsrv的连接,所以这里只需选择DB Driver为sqlsrv即可。,4.1.2 简单Hibernate应用,单击【Next】按钮,选择Hibernate框架所需要的类库(这里仅取必需的Core库),如图4.6所示。,4.1.2 简单Hibernate应用,单击【Finish】按钮完成添加。通过以上一系列步骤,项目中新增了一个Hibernate库目录、一个hibernate.cfg.xml配置文件、一个HibernateSessio

6、nFactory.java类,另外,数据库驱动也被自动载入进来,此时项目目录树呈现如图4.7所示的状态。,4.1.2 简单Hibernate应用,(3)为userTable表生成持久化对象 选择主菜单【Window】【Open Perspective】【MyEclipse Database Explorer】,打开MyEclipse Database Explorer视图。打开先前创建的sqlsrv连接,选中数据库表userTable,并右击,选择菜单【Hibernate Reverse Engineering】,如图4.8所示,将启动Hibernate Reverse Engineering

7、向导,用于完成从已有数据库表生成对应的持久化Java类和相关映射文件的配置工作。,4.1.2 简单Hibernate应用,首先,如图4.9所示,选择生成的类及映射文件所在的位置。,4.1.2 简单Hibernate应用,单击【Next】按钮,进入如图4.10所示的界面,配置映射文件的细节。,4.1.2 简单Hibernate应用,单击【Next】按钮,进入如图4.11所示的界面,配置反向工程的细节,这里保持默认配置即可。,4.1.2 简单Hibernate应用,(4)创建JSP文件 同【实例二】(2.2.4节)一样,本例有4个JSP文件,其中login.jsp(登录页)、main.jsp(主页

8、)和error.jsp(出错页)这3个文件的源码完全相同,不同的仅仅是validate.jsp(验证页)文件的代码,改为使用Hibernate框架以面向对象的方式访问数据库。 validate.jsp的代码所示。,4.1.2 简单Hibernate应用,2Hibernate在其中所起的作用 显而易见,这里的Hibernate自动生成了所需的JavaBean,也取代了原JDBC的功能!读者可简单形象地理解为:HibernateJavaBeanJDBC,于是得到应用了Hibernate的Model1模式Java EE系统结构图,如图4.12所示。,4.2 Hibernate应用基础,4.2.1 H

9、ibernate应用开发步骤 【例4.1】Hibernate开发Java应用步骤演示。 1建立数据库及表 本书使用SQL Server 2008数据库。在XSCJ数据库中建立KCB表,其表结构如附录A.2所示。 2在MyEclipse中创建对SQL Server的连接 同【实例一】(1.3.2节)第(2)步,这里就使用早已建好的连接sqlsrv。,4.2.1 Hibernate应用开发步骤,3创建Java项目 在MyEclipse 2014中,选择主菜单【File】【New】【Java Project】,出现如图4.13所示的【New Java Project】窗口,填写“Project Na

10、me”栏(为项目起名)为“HibernateTest”。,4.2.1 Hibernate应用开发步骤,4添加Hibernate开发能力 在项目src目录下创建一个名为org.util的包,用于放置马上要生成的HibernateSessionFactory.java文件。 右击项目名,选择菜单【MyEclipse】【Project Facets Capabilities】【Install Hibernate Facet】,在弹出的对话框中单击【Yes】按钮,余下操作同【实例五】(4.1.2节)第(2)步,最终生成的项目目录树,如图4.14所示。,4.2.1 Hibernate应用开发步骤,5生成

11、数据库表对应的Java类对象和映射文件 在项目src目录下创建一个名为org.model的包,这个包将用来存放与数据库KCB表对应的Java类POJO。 接下来的操作同【实例五】第(3)步,只是在配置映射文件细节的对话框中,选择主键生成策略为“assigned”,如图4.15所示。,4.2.1 Hibernate应用开发步骤,6创建测试类 在src文件夹下创建包test,在该包下建立测试类,命名为Test.java,其代码。 7运行 因为该程序为Java Application,所以可直接运行。运行程序,控制台就会打印出“机电”。打开数据库KCB表,读者会发现里面多了一条记录,如图4.16所示

12、。,4.2.2 Hibernate各种文件的作用,1POJO类和其映射配置文件 本例的POJO类为Kcb,其源码位于org.model包的Kcb.java中,代码如示。 可以发现,该类中的属性和表中的字段是一一对应的。那么通过什么方法把它们一一映射起来呢?就是前面提到的*.hbm.xml映射文件。这里当然就是Kcb.hbm.xml,其代码所示。,4.2.2 Hibernate各种文件的作用,该配置文件大致分为3部分。 (1)类、表映射配置 name属性指定POJO类为org.model.Kcb,table属性指定当前类对应数据库表KCB。 (2)id映射配置 ,4.2.2 Hibernate各

13、种文件的作用,Hibernate的主键生成策略分为三大类:Hibernate对主键id赋值、应用程序自身对id赋值、由数据库对id赋值。 assigned:应用程序自身对id赋值。 native:由数据库对id赋值。 hilo:通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。 increment:主键按数值顺序递增。 identity:采用数据库提供的主键生成机制,如SQL Server、MySQL中的自增主键生成机制。 sequence:采用数据库提供的sequence机制生成主键,如Oracle sequence。 uuid.hex:由Hibernate基于1

14、28位唯一值产生算法,根据当前设备IP、时间、JVM启动时间、内部自增量等4个参数生成十六进制数值(编码后长度为32位的字符串表示)作为主键。 uuid.string:与uuid.hex类似,只是对生成的主键进行编码(长度为16位)。 foreign:使用外部表的字段作为主键。 select:Hibernate 3新引入的主键生成机制,主要针对遗留系统的改造工程。,4.2.2 Hibernate各种文件的作用,(3)属性、字段映射配置 属性、字段映射将映射类属性与库表字段相关联。 name=“kcm“ 指定映像类中的属性名为“kcm”,此属性将被映像到指定的库表字段KCM。type=“java

15、.lang.String“指定映像字段的数据类型。column name=“KCM“指定类的kcm属性映射KCB表中的KCM字段。,4.2.2 Hibernate各种文件的作用,2hibernate.cfg.xml文件 该文件是Hibernate重要的配置文件,配置该文件主要是配置SessionFractory类。其主要代码及解释。 3HibernateSessionFactory HibernateSessionFactory类是自定义的SessionFactory,名字可以根据自己的喜好来决定。这里用的是HibernateSessionFactory,其代码及解释。 在Hibernate中

16、,Session负责完成对象持久化操作。该文件负责创建Session对象,以及关闭Session对象。从该文件可以看出,Session对象的创建大致需要以下3个步骤。 初始化Hibernate配置管理类Configuration。 通过Configuration类实例创建Session的工厂类SessionFactory。 通过SessionFactory得到Session实例。,4.2.3 Hibernate核心接口,1Configuration接口 Configuration负责管理Hibernate的配置信息。Hibernate运行时需要一些底层实现的基本信息。这些信息包括:数据库URL、数据库用户名、数据库用户密码、数据库JDBC驱动类、数据库dialect。 使用Hibernate必须首先提供这些基础信息以完成初始化工作,为后续操作做好准备。这些属性在Hibernate配置文件hibernate.cfg.xml中加以设定,当调用下述代码时,Hib

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

当前位置:首页 > 高等教育 > 大学课件

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