第4章Hibernate应用课堂.ppt
《第4章Hibernate应用课堂.ppt》由会员分享,可在线阅读,更多相关《第4章Hibernate应用课堂.ppt(118页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章Hibernate应用课堂 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望回顾:Struts 2应用Struts 2Struts 2开发流程:开发流程:开发流程:开发流程:2 2个个个个XML+ActionXML+Action类类类类+JSP+JSP页面页面页面页面+JavaBean+JavaBean校验器:校验器:校验器:校验器:validatevalidate方法或者方法或者方法或者方法或者XMLXML校验器校验器校验器校验器 注意:命名注意:命名注意:
2、命名注意:命名+位置位置位置位置拦截器:拦截器:拦截器:拦截器:struts.xmlstruts.xml配置配置配置配置 拦截器类(继承拦截器类(继承拦截器类(继承拦截器类(继承AbstractInterceptorAbstractInterceptor ,重写,重写,重写,重写interceptintercept方法方法)国际化:国际化:国际化:国际化:struts.propertiesstruts.properties 相应语言的相应语言的相应语言的相应语言的propertiesproperties文件文件文件文件(*_zh _CN.properties(*_zh _CN.properti
3、es或或或或*_en _US.properties)*_en _US.properties)位置位置位置位置+命名命名命名命名2回顾:Struts 2应用两个问题:两个问题:两个问题:两个问题:Struts 2.1Struts 2.1以后版本过滤器:以后版本过滤器:以后版本过滤器:以后版本过滤器:官方推荐官方推荐官方推荐官方推荐org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFi
4、lter 建议大家使用建议大家使用建议大家使用建议大家使用org.apache.struts2.dispatcher.FilterDispatcherorg.apache.struts2.dispatcher.FilterDispatcher 原因:如果你用原因:如果你用原因:如果你用原因:如果你用StrutsPrepareAndExecuteFilterStrutsPrepareAndExecuteFilter,到时候处理中文就,到时候处理中文就,到时候处理中文就,到时候处理中文就会很麻烦会很麻烦会很麻烦会很麻烦 (详见(详见(详见(详见Struts 2.1Struts 2.1权威指南权威指
5、南权威指南权威指南576576页页页页 )。)。)。)。*.action*.action配置配置配置配置struts2*.actionstruts2*.jsp3第4章 Hibernate应用4第4章 Hibernate应用4.1 Hibernate概述概述4.2 Hibernate应用基础应用基础4.3 Hibernate关系映射关系映射4.4 Hibernate高级功能高级功能4.5 Hibernate与与Struts 2整合应用整合应用54.1 Hibernate概述概述64.1 Hibernate概述概述1.ORM1.ORM简介简介简介简介对象对象对象对象/关系映射关系映射关系映射关系映
6、射ORMORM(Object-Relation MappingObject-Relation Mapping)对象与对象之间的关系对应到数据库表与表之间的关系的一种模式。对象与对象之间的关系对应到数据库表与表之间的关系的一种模式。对象与对象之间的关系对应到数据库表与表之间的关系的一种模式。对象与对象之间的关系对应到数据库表与表之间的关系的一种模式。简单地说,简单地说,简单地说,简单地说,ORMORM是通过使用描述对象和数据库之间映射的元数据,是通过使用描述对象和数据库之间映射的元数据,是通过使用描述对象和数据库之间映射的元数据,是通过使用描述对象和数据库之间映射的元数据,将将将将JavaJav
7、a程序中的对象自动持久化到关系数据库中。程序中的对象自动持久化到关系数据库中。程序中的对象自动持久化到关系数据库中。程序中的对象自动持久化到关系数据库中。对象和关系数据是业务实现的两种表现形式,业务实体在内存中表对象和关系数据是业务实现的两种表现形式,业务实体在内存中表对象和关系数据是业务实现的两种表现形式,业务实体在内存中表对象和关系数据是业务实现的两种表现形式,业务实体在内存中表现为现为现为现为对象对象对象对象,在数据库中表现为,在数据库中表现为,在数据库中表现为,在数据库中表现为关系数据关系数据关系数据关系数据。内存中的对象之间存在着。内存中的对象之间存在着。内存中的对象之间存在着。内存
8、中的对象之间存在着关联和继承关系。而在数据库中,关系数据无法直接表达多对多关关联和继承关系。而在数据库中,关系数据无法直接表达多对多关关联和继承关系。而在数据库中,关系数据无法直接表达多对多关关联和继承关系。而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,联和继承关系。因此,联和继承关系。因此,联和继承关系。因此,ORMORM系统一般以中间件的形式存在,主要实系统一般以中间件的形式存在,主要实系统一般以中间件的形式存在,主要实系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。现程序对象到关系数据库数据的映射。现程序对象到关系数据库数据的映射。现程序对象到关系数据
9、库数据的映射。一般的一般的一般的一般的ORMORM包括四个部分:包括四个部分:包括四个部分:包括四个部分:对持久类对象进行对持久类对象进行对持久类对象进行对持久类对象进行CRUDCRUD操作的操作的操作的操作的APIAPI(CRUDCRUD操作操作操作操作APIAPI)用来规定类和类属性相关查询的语言或用来规定类和类属性相关查询的语言或用来规定类和类属性相关查询的语言或用来规定类和类属性相关查询的语言或APIAPI(查询语言或查询语言或查询语言或查询语言或APIAPI)规定规定规定规定mapping metadatamapping metadata的工具(的工具(的工具(的工具(映射机制映射机
10、制映射机制映射机制)让让让让ORMORM实现同事务对象一起进行脏数据检查实现同事务对象一起进行脏数据检查实现同事务对象一起进行脏数据检查实现同事务对象一起进行脏数据检查(dirty checking)(dirty checking)、延迟关、延迟关、延迟关、延迟关联抓取联抓取联抓取联抓取(lazy association fetching)(lazy association fetching)和其他优化操作的技术(和其他优化操作的技术(和其他优化操作的技术(和其他优化操作的技术(实现技术实现技术实现技术实现技术)74.1 Hibernate概述概述2.Hibernate体系结构体系结构Hibe
11、rnate作为模型层作为模型层/数据访问层。它通过数据访问层。它通过配置文件配置文件(hibernate.cfg.xml或或hibernate.properties)和和映射文件映射文件(*.hbm.xml)把把Java对象或持久化对象(对象或持久化对象(Persistent Object,PO)映射到数据库中的数据表,然后通过操作映射到数据库中的数据表,然后通过操作PO,对数据库,对数据库中的表进行各种操作,其中中的表进行各种操作,其中PO就是就是POJO(普通(普通Java对象)加对象)加映射文件映射文件。Hibernate的体系结构如图的体系结构如图4.1所示。所示。图4.1 Hiber
12、nate体系结构84.2 Hibernate应用基础应用基础94.2 Hibernate应用基础应用基础Hibernate开发步骤:(1 1)创建)创建)创建)创建HibernateHibernate的配置文件。的配置文件。的配置文件。的配置文件。(2 2)创建持久化类。)创建持久化类。)创建持久化类。)创建持久化类。(3 3)创建对象)创建对象)创建对象)创建对象-关系映射文件。关系映射文件。关系映射文件。关系映射文件。(4 4)通过)通过)通过)通过Hibernate APIHibernate API编写访问数据库的代码。编写访问数据库的代码。编写访问数据库的代码。编写访问数据库的代码。1
13、04.2 Hibernate应用基础应用基础4.2.1 Hibernate4.2.1 Hibernate应用实例开发应用实例开发应用实例开发应用实例开发开发开发开发开发HibernateHibernate项目的步骤如下。项目的步骤如下。项目的步骤如下。项目的步骤如下。1 1建立数据库及表建立数据库及表建立数据库及表建立数据库及表在在在在XSCJXSCJ数据库中建立数据库中建立数据库中建立数据库中建立KCBKCB表,其表结构如附录表,其表结构如附录表,其表结构如附录表,其表结构如附录A.2A.2所示。所示。所示。所示。名称名称列名列名数据类型数据类型可空可空默认值默认值说明说明课程号课程号kch
14、kchCharChar(3 3)否否无无主键主键课程名课程名kcmkcmCharChar(1212)是是无无开课学期开课学期kxxqkxxqsmallintsmallint是是无无1-81-8学时学时xsxsintint是是0 0学分学分xfxfintint是是0 0附录附录A.2 课程信息表课程信息表114.2.1 Hibernate应用实例开发应用实例开发2 2在在在在MyEclipseMyEclipse中创建对中创建对中创建对中创建对MySQL MySQL 的连接的连接的连接的连接启动启动MyEclipseMyEclipse,选择【,选择【WindowWindow】【Open Persp
15、ectiveOpen Perspective】【MyEclipse Database ExplorerMyEclipse Database Explorer】菜单项,打开】菜单项,打开MyEclipse MyEclipse DatabaseDatabase浏览器,右击菜单,如图浏览器,右击菜单,如图4.24.2所示,选择【所示,选择【NewNew】菜单项,出现如图菜单项,出现如图4.34.3所示的对话框,编辑数据库连接驱动。所示的对话框,编辑数据库连接驱动。图4.2 MyEclipse Database浏览器,创建一个新的连接图4.3 编辑数据库连接驱动 124.2.1 Hibernate应用
16、实例开发应用实例开发编辑完成以后,在编辑完成以后,在MyEclipse DatabaseMyEclipse Database浏览器中,右击浏览器中,右击刚才创建的刚才创建的MyConnMyConn数据库连接,选择数据库连接,选择“Open“Open connection”connection”菜单项,打开名为菜单项,打开名为“MyConn”“MyConn”的数据连接,的数据连接,如图如图4.44.4所示。所示。图4.4 打开数据库连接134.2.1 Hibernate应用实例开发应用实例开发3 3创建创建创建创建WebWeb项目,命名为项目,命名为项目,命名为项目,命名为“HibernateT
17、est”“HibernateTest”4 4添加添加添加添加HibernateHibernate开发能力开发能力开发能力开发能力右击项目名右击项目名HibernateTestHibernateTest,选择【,选择【MyEclipseMyEclipse】【Add Add Hibernate CapabilitesHibernate Capabilites】菜单项,出现如图】菜单项,出现如图4.54.5所示的对话框,所示的对话框,选择选择HibernateHibernate框架应用版本及所需要的类库。框架应用版本及所需要的类库。图4.5 选择Hibernate版本及所需Jar包144.2.1 H
18、ibernate应用实例开发应用实例开发单击【Next】按钮,进入如图4.6所示界面。创建Hibernate配置文件hibernate.cfg.xml,将该文件放在src文件夹下,后面会详细介绍该文件内容。这里先说明添加Hibernate开发功能的步骤。图4.6 创建配置文件hibernate.cfg.xml 154.2.1 Hibernate应用实例开发应用实例开发单击【单击【NextNext】按钮,进入如图】按钮,进入如图4.74.7所示界面,指定所示界面,指定HibernateHibernate数据库连接细节。由于在前面已经配置一个名数据库连接细节。由于在前面已经配置一个名为为MyCon
19、nMyConn的数据库连接,所以这里只需要选择的数据库连接,所以这里只需要选择DB DB DriverDriver为为“MyConn”“MyConn”即可。即可。图4.7 指定hibernate数据库连接164.2.1 Hibernate应用实例开发应用实例开发单击【Next】按钮,出现如图4.8所示界面。Hibernate中有一个与数据库打交道重要的类Session。而这个类是由工厂SessionFactory创建的。这个界面询问是否需要创建SessionFactory类。如果需要创建,还需要指定创建的位置和类名。这些接口都会在后面详细介绍。单击【Finish】按钮,完成Hibernate的
20、配置。图4.8 创建SessionFactory类来简化Hibernate会话处理174.2.1 Hibernate应用实例开发应用实例开发5.5.生成数据库表对应的生成数据库表对应的JavaJava类对象和映射文件类对象和映射文件首先在首先在MyEclispseMyEclispse下创建一个名为下创建一个名为“org.model”“org.model”的包,这个包将用来的包,这个包将用来存放与数据库表对应的存放与数据库表对应的JavaJava类类POJOPOJO。打开打开MyEclipse Database ExplorerMyEclipse Database Explorer视图。打开前面
21、创建的视图。打开前面创建的MyConnMyConn数数据连接,选择【据连接,选择【XSCJXSCJ】【dbodbo】【TABLETABLE】菜单项,右击】菜单项,右击KCBKCB表,表,选择【选择【Hibernate Reverse EngineeringHibernate Reverse Engineering】菜单项,如图】菜单项,如图4.94.9所示,将所示,将启动启动Hibernate Reverse EngineeringHibernate Reverse Engineering向导,该向导用于完成从已有的向导,该向导用于完成从已有的数据库表生成对应的数据库表生成对应的JavaJav
22、a类和相关映像文件的配置工作。类和相关映像文件的配置工作。图4.9 Hibernate反向工程菜单184.2.1 Hibernate应用实例开发应用实例开发首先,选择生成的Java类和映像文件所在的位置,如图4.10所示。POJO(Plain Old Java Object,简单的Java对象),通常也称为VO(Value Object,值对象)。图4.10 生成Hibernate映射文件和Java类194.2.1 Hibernate应用实例开发应用实例开发使用POJO名称是为了避免和EJB混淆起来,其中有一些属性及getter、setter方法。当然,如果有一个简单的运算属性也是可以的,但不
23、允许有业务方法。单击【Next】按钮,进入如图4.11所示的界面,选择主键生成策略。图4.11 配置反向工程细节204.2.1 Hibernate应用实例开发应用实例开发6.创建测试类在src文件夹下创建包test,在该包下建立测试类,命名为Test.java,代码如下:publicclassTestpublicstaticvoidmain(Stringargs)/调用调用HibernateSessionFactory的的getSession方法创建方法创建Session对象对象Sessionsession=HibernateSessionFactory.getSession();Transa
24、ctionts=session.beginTransaction();/创建事务对象创建事务对象Kcbkc=newKcb();/创建创建POJO类对象类对象kc.setKch(100);/设置课程号设置课程号kc.setKcm(JavaEE应用开发基础应用开发基础);/设置课程名设置课程名/kc.setKxxq(newInteger(5).shortValue();/设置开学学期设置开学学期kc.setKxxq(newShort(short)5);/kc.setXf(newInteger(4).shortValue();/设置学分设置学分kc.setXf(newInteger(3);kc.se
25、tXs(newInteger(64);session.save(kc);/保存对象保存对象mit();/提交事务提交事务Queryquery=session.createQuery(fromKcbwherekch=100);Listlist=query.list();Kcbkc1=(Kcb)list.get(0);System.out.println(kc1.getKcm();HibernateSessionFactory.closeSession();/关闭关闭Session214.2.1 Hibernate应用实例开发应用实例开发7.7.运行运行因为该程序为因为该程序为Java Appli
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 应用 课堂
限制150内