07单元7基于Hibernate的Web应用程序开发校.docx
- 文档编号:6469319
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:16
- 大小:70.14KB
07单元7基于Hibernate的Web应用程序开发校.docx
《07单元7基于Hibernate的Web应用程序开发校.docx》由会员分享,可在线阅读,更多相关《07单元7基于Hibernate的Web应用程序开发校.docx(16页珍藏版)》请在冰豆网上搜索。
07单元7基于Hibernate的Web应用程序开发校
单元7 基于Hibernate的Web应用程序开发
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了简单的对象封装,使得Java程序员可以使用面向对象编程思想来操作数据库。
Hibernate既可以在Java的客户端程序中使用,也可以JSP/Servlet的Web应用程序中使用,Hibernate可以在JavaEE中取代CMP(Container-ManagedPersistence),完成数据持久化的重任。
【问题探析】
【问题1】面向对象的开发方法与关系数据库
【问题2】比较JDBC与Hibernate访问数据库的不同点
【问题3】Hibernate的持久化层与应用程序的三层结构的关系如何?
【知识必备】
1.Hibernate简介
Hibernate是一个开源的持久层框架,Hibernate就是位于数据库和应用程序之间的各种ORM中间件。
Hibernate是一种Java语言下的对象关系映射解决方案,它是一种自由、开源的软件。
它用来把对象模型表示的对象映射到基于SQL的关系模型结构中,为面向对象的领域模型到传统的关系型模型库的映射提供了一个使用方便的框架。
Hibernate封装了数据库的访问细节,并一直维护着实体类与关系型数据库中数据表之间的映射关系,业务处理可以通过Hibernate提供的API接口进行数据库操作。
2.对象-关系映射
对象-关系映射(ObjectRelationalMapping,ORM)是一种为了解决面向对象与关系数据库的相互匹配的技术,是随着面向对象的软件开发方法发展而产生的。
在Hibernate框架中,ORM的设计思想得以具体实现。
Hibernate主要通过持久化类(*.java)、Hibernate映射文件(*.hbm.xml)和Hibernate配置文件(*.cfg.xml)与数据库进行互交。
3.数据持久化
(1)什么叫持久化?
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
(2)什么叫持久层?
持久化层(PersistenceLayer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。
(3)为什么要持久化?
增加持久层的作用是什么?
增加持久化层提高了开发的效率,使软件的体系结构更加清晰,在代码编写和系统维护方面变得更容易。
特别是在大型的应用项目中会更有利。
数据持久化可以减少访问数据库的次数,增加应用程序执行速度;使代码重用度提高,能够完成大部分数据库操作;使持久化不依赖于底层数据库和上层业务逻辑实现。
更换数据库时只需修改配置文件,而不需要修改业务逻辑代码。
4.Hibernate的常用接口
Hibernate的常用接口主要有Configuration接口、SessionFactory接口、Session接口、Transaction接口、Query接口和Criteria接口。
这6个核心接口在Hibernate框架中发挥着重要作用,使用这6个接口不仅可以获取数据库连接、对数据进行持久化操作、HQL查询等,而且还可以对事务进行控制。
5.Hibernate的运行原理
Hibernate的运行原理如图7-3所示,具体说明如下:
(1)Java应用程序首先调用Configuration类,该类读取Hibernate配置文件和映射文件中的信息。
(2)Configuration类利用配置信息和映射信息生成一个SessionFactory对象。
(3)SessionFactory对象生成一个Session对象。
(4)Session对象生成一个Transaction对象。
(5)Session对象通过get()、load()、save()、update()、delete()和savaOrUpdate()等方法对PO(PersistentObjects,持久化对象)进行加载、保存、更新、删除等操作。
6.Hibernate实例的三种状态
Hibernate实例状态分为3种,分别为临时状态(Transient)、持久化状态(Persistent)、脱管状态(Detached)。
7.持久化类
对象-关系映射(ORM)是Hibernate的基础,在Hibernate中,持久化类是Hibernate操作的对象,它与数据库中的数据表相对应,描述数据表的结构等信息。
在持久化类中,其属性信息与数据表中的字段相匹配。
商品持久化类GoodsInfo的定义如表7-1所示,该类中定义了多个商品的基本属性,并提供了相应的getXXX()和setXXX()方法。
8.Hibernate的映射文件
(1)Hibernate映射文件的基本概念
Hibernate映射文件是Hibernate的核心文件,用来把持久化对象与数据库中的表、持久化对象之间的关系与数据库表之间的关系、持久化对象的属性与数据表字段一一映射起来。
(2)Hibernate映射文件应遵循的规则
Hibernate映射文件应遵循以下规则:
①映射文件名称和对应的实体类名称一致。
②映射文件和对应的实体类保存在同一个位置。
③映射文件必须在hibernate.cfg.xml文件中加载,通过
(3)Hibernate映射文件的元素
从表7-2可以看出Hibernate映射文件的根元素为
通常情况下只有一个
(4)
①name属性。
②column属性。
③type属性。
(5)常用内置主键生成策略
常用内置主键生成策略如下所示。
①increment。
②identity。
③sequence。
④hilo。
⑤native。
⑥uuid。
⑦assigned。
(6)
①name:
指定持久化类中的属性名称。
②column:
指定数据表中的字段名称。
③type:
指定数据表中的字段类型。
④not-null:
指定数据表字段的非空属性,它是一个布尔值。
⑤length:
指定数据表中的字段长度。
⑥unique:
指定数据表字段值是否唯一,它是一个布尔值。
⑦lazy:
设置延迟加载。
9.Hibernate的配置文件
Hibernate配置文件主要用来配置数据库连接参数,例如数据库的驱动程序、URL、用户名和密码等。
Hibernate支持两种格式的配置文件:
hibernate.cfg.xml和hibernate.properties,两种的配置内容基本相同,但前者的使用稍微方便一些,一般情况下,hibernate.cfg.xml是Hibernate的默认配置文件。
hibernate.cfg.xml可以在其
【操作必备】
(1)下载与配置Hibernate
Hibernate官方网站的网址是http:
//www.hibernate.org,在该网站上可以获取Hibernate的最新版本的Jar包以及帮助文档,本书所使用的Hibernate开发包为Hibernate4.1.8版本。
(2)下载并安装好数据库管理系统SQLServer2008。
(3)在MicrosoftSQLServer2008中创建数据库ECommerce,并在该数据库中创建“商品数据表”、“商品类型表”和“用户表”。
(4)从网上下载Servlet支持类库servlet-api.jar和JDBC支持类库sqljdbc4.jar。
(5)准备开发Web应用程序所需的图片文件、CSS样式文件和验证用的Javascript文件。
(6)启动Eclipse,设置工作空间为Unit07,然后进入Eclipse的开发环境。
(7)在Eclipse集成开发环境中配置与启动Tomcat服务器。
(8)新建动态Web项目,命名为task7-X,本单元有8个任务,每个任务创建一个独立的Web项目,命名分别为task7-1至task7-8。
(9)在Web项目中创建包,将其命名为“package07X”,本单元各个Web项目中的包分别命名为package071至package078。
(10)将Jar包文件servlet-api.jar和sqljdbc4.jar拷贝到各个Web项目的文件夹“WebContent\WEB-INF\lib”下,并在Eclipse集成开发环境的“项目资源管理器”刷新各个Web项目。
(11)创建Hibernate的配置文件hibernate.cfg.xml
(12)创建Hibernate的初始化类HibernateInitClass
【基础应用】
【任务7-1】使用Hibernate框架实现手动导出数据表
【任务描述】
面向对象的编程思想在Hibernate框架中体现得淋漓尽致,它将数据库中的数据表看做是对象,对数据的操作同样以对象的方式进行处理。
通过Hibernate框架提供的自动建表技术导出“商品数据表”,且在Eclipse的控制台中输出DDL语句。
【任务实施】
1.配置程序开发环境
首先新建动态Web项目task7-1,在该项目中创建包package071。
然后按照【操作必备】中介绍的方法导入Hibernate支持类库、Servlet支持类库servlet-api.jar、数据库驱动包sqljdbc4.jar,创建Hibernate的配置文件hibernate.cfg.xml文件,创建Hibernate的初始化类HibernateInitClass。
2.创建商品实体类(持久化类)
在包package071中创建商品实体类,将该实体命名为GoodsInfo,该类封装了商品的详细信息,代码如表7-1所示。
3.创建商品实体对象的映射文件goods.hbm.xml
在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个映射文件goods.hbm.xml,该映射文件将GoodsInfo实体对象映射为“商品数据表”,并设置了主键的生成策略为identity。
代码如表7-2所示。
4.创建Servlet类Servlet071
在包package071中创建一个Servlet类,将其命名为“Servlet071”,该类用于处理JSP页面所提交的请求,通过doGet()方法对请求进行处理,该方法的代码如表7-5所示。
5.创建JSP页面task7-1.jsp
在Web项目task7-1中创建名为“task7-1.jsp”的JSP页面,该页面用于将当前页面的请求转发给Servlet对象Servlet071,其代码如下所示。
forwardpage="Servlet071">
forward>
6.运行程序输出结果
运行JSP页面task7-1.jsp,在页面中显示“导出数据成功!
”的提示信息,同时在Eclipse的控制台中输出DDL语句,如图7-5所示。
【任务7-2】使用Hibernate框架查询用户数据
【任务描述】
Hibernate框架对JDBC做了轻量级的封装,使用Hibernate对数据进行操作时,不必再编写繁琐的JDBC代码,使用Hibernate框架查询“Ecommerce”数据库的“用户表”中指定“用户ID”的用户数据。
【任务实施】
1.配置程序开发环境
首先新建动态Web项目task7-2,在该项目中创建包package072。
然后按照【操作必备】中介绍的方法导入Hibernate支持类库、Servlet支持类库servlet-api.jar、数据库驱动包sqljdbc4.jar,创建Hibernate的配置文件hibernate.cfg.xml文件。
2.创建用户实体类(持久化类)
在包package072中创建用户实体类,将该实体命名为UserInfo,该类封装了用户的详细信息,代码如表7-6所示。
3.创建用户实体对象的映射文件user.hbm.xml
在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个映射文件user.hbm.xml,该映射文件将UserInfo实体对象映射为“用户表”,并设置了主键的生成策略为native。
映射文件的主要代码如表7-7所示。
4.创建Servlet类UserServlet072
在包package072中创建一个Servlet类,将其命名为“UserServlet072”,该类用于处理JSP页面所提交的请求,通过doGet()方法对请求进行处理,该方法的代码如表7-8所示。
5.创建JSP页面task7-2.jsp
在Web项目task7-1中创建名为“task7-2.jsp”的JSP页面,该页面用于将当前页面的请求转发给Servlet对象UserServlet072,其代码如下所示。
forwardpage="UserServlet072">
forward>
6.运行程序输出结果
运行JSP页面task7-2.jsp,其运行结果如图7-7所示。
图7-7 JSP页面task7-2.jsp的运行结果
【任务7-3】使用Hibernate框架修改与新增商品数据
【任务描述】
(1)使用Hibernate框架对“Ecommerce”数据库的“商品数据表”中指定“商品ID”的数据进行修改。
(2)使用Hibernate框架在“Ecommerce”数据库的“商品数据表”中新增商品数据。
【任务实施】
1.配置程序开发环境
首先新建动态Web项目task7-3,在该项目中创建包package073。
然后按照【操作必备】中介绍的方法导入Hibernate支持类库、Servlet支持类库servlet-api.jar、数据库驱动包sqljdbc4.jar,创建Hibernate的配置文件hibernate.cfg.xml文件。
2.创建商品实体类(持久化类)
在包package073中创建用户实体类,将该实体命名为GoodsInfo,该类封装了商品的详细信息,代码如表7-1所示。
3.创建商品实体对象的映射文件goods.hbm.xml
在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个映射文件goods.hbm.xml,该映射文件将GoodsInfo实体对象映射为“商品数据表”,并设置了主键的生成策略为identity。
映射文件的主要代码如表7-2所示。
4.创建JSP页面message.jsp
在Web项目task7-3中创建名称为“message.jsp”的JSP页面,该页面用于显示商品数据修改和新增成功的提示信息,并提供查看商品数据修改结果的超链接,代码如下所示。
${message}
5.创建Java类GoodsInfoManage
在包package073中创建一个类,将其命名为“GoodsInfoManage”,该类用于封装与商品对象相关的数据库操作,包括查询商品数据、修改商品数据和新增商品数据的方法,其名称分别为getGoodsById()、updateInfo()和saveInfo(),该类的代码如表7-9所示。
6.实现商品数据的修改操作
修改商品数据的操作流程如图7-9所示。
(1)创建Servlet类UpdateInfoServlet
(2)创建JSP页面updateInfo7-31.jsp
在Web项目task7-3中创建名为“updateInfo7-31.jsp”的JSP页面,该页面提供了修改商品数据的表单,其主要代码如表7-11所示。
(3)创建Servlet类GetInfoServlet
在包package073中创建一个Servlet类,将其命名为“GetInfoServlet”,该类用于加载商品数据,在加载商品数据后将页面转发到updateInfo7-31.jsp页面,通过doGet()方法完成数据加载与页面转向等操作,该方法的代码如表7-12所示。
(4)创建JSP页面task7-31.jsp
在Web项目task7-3中创建名为“task7-31.jsp”的JSP页面,该页面用于将当前页面的请求转发给Servlet对象GetInfoServlet,其代码如下所示。
forwardpage="GetInfoServlet">
forward>
(5)运行程序输出结果
运行JSP页面task7-31.jsp,其运行结果如图7-10所示。
将“库存数量”文本框中的1000修改为200,然后单击【更新】按钮,转到message.jsp页面,如图7-11所示。
图7-11 成功修改商品数据后的message.jsp页面
在message.jsp页面中单击“查看修改数据的结果”超链接,再一次打开JSP页面task7-31.jsp,可以发现“库存数量”已成功修改为200。
7.实现商品数据的新增操作
(1)创建Servlet类AddInfoServlet
在包package073中创建一个Servlet类,将其命名为“AddInfoServlet”,该类用于处理新增商品数据的请求,该Servlet类对新增的商品数据进行了封装,通过doPost()方法完成数据封装与保存等操作,并调用了GoodsInfoManage类的saveInfo()方法对商品数据完成新增操作,该方法的代码如表7-13所示。
(2)创建JSP页面task7-32.jsp
在Web项目task7-3中创建名为“task7-32.jsp”的JSP页面,该页面提供了新增商品数据的表单,其主要代码如表7-14所示。
(3)运行程序输出结果
运行JSP页面task7-32.jsp,显示新增商品数据的表单,在各个文本框中输入对应的商品数据,其结果如图7-12所示。
然后单击【保存】按钮,转到message.jsp页面,如图7-13所示。
图7-13 成功新增商品数据后的message.jsp页面
【任务7-4】使用Hibernate框架和HQL查询语言查询商品数据
【任务描述】
(1)使用Hibernate框架和HQL查询语言从“Ecommerce”数据库的“商品数据表”中查询指定“商品ID”的一条商品数据。
(2)使用Hibernate框架和HQL查询语言从“Ecommerce”数据库的“商品数据表”中查询满足给定条件的商品数据。
【任务实施】
1.配置程序开发环境
首先新建动态Web项目task7-4,在该项目中创建包package074。
然后按照【操作必备】中介绍的方法导入Hibernate支持类库、Servlet支持类库servlet-api.jar、数据库驱动包sqljdbc4.jar,创建Hibernate的配置文件hibernate.cfg.xml文件。
2.创建商品实体类(持久化类)
在包package074中创建用户实体类,将该实体命名为GoodsInfo,该类封装了商品的详细信息,代码如表7-1所示。
3.创建商品实体对象的映射文件goods.hbm.xml
在Eclipse的【项目资源管理器】的子文件夹“src”中创建一个映射文件goods.hbm.xml,该映射文件将GoodsInfo实体对象映射为“商品数据表”,并设置了主键的生成策略为identity。
映射文件的主要代码如表7-2所示。
4.从“商品数据表”中查询指定“商品ID”的一条商品数据
(1)创建Servlet类GoodsInfoServlet7_41
在package074创建一个Servlet类,将其命名为“GoodsInfoServlet7_41”,该类通过doGet()方法实现从“商品数据表”中查询指定“商品ID”的一条商品数据,该方法的代码如表7-15所示。
(2)创建JSP页面task7-41.jsp
在Web项目task7-4中创建名称为“task7-41.jsp”的JSP页面,该页面用于将当前页面的请求转发给Servlet对象GoodsInfoServlet7_41,其代码如下所示。
forwardpage="GoodsInfoServlet7_41">
forward>
(3)运行程序输出结果
运行JSP页面task7-41.jsp,,其结果如图7-14所示。
图7-14 task7-41.jsp页面的运行结果
5.从“商品数据表”中查询满足给定条件的商品数据
(1)创建Java类GetGoodsInfo074
在包package074中创建一个Java类,将其命名为“GetGoodsInfo074”,该类中定义的方法getGoodsInfo()用于从“商品数据表”中获取满足给定条件的商品数据,该类的代码如表7-16所示。
(2)创建JSP页面printGoodsInfo7-4.jsp
在Web项目task7-4中创建名称为“printGoodsInfo7-4.jsp”的JSP页面,该页面用于显示所查询的商品数据,其主要代码如表7-17所示。
(3)创建Servlet类GoodsInfoServlet7_42
在package074创建一个Servlet类,将其命名为“GoodsInfoServlet7_42”,该类在doGet()方法中调用GetGoodsInfo074类的getGoodsInfo()方法从“商品数据表”中获取满足给定条件的商品数据,然后转发到printGoodsInfo7-4.jsp页面,该方法的代码如表7-18所示。
(4)创建JSP页面task7-42.jsp
在Web项目task7-4中创建名称为“task7-42.jsp”的JSP页面,该页面用于将当前页面的请求转发给Servlet对象GoodsInfoServlet7_42,其代码如下所示。
forwardpage="GoodsInfoServlet7_42">
forward>
(5)运行程序输出结果
运行JSP页面task7-42.jsp,其结果如图7-15所示。
【渐进应用】
【任务7-5】使用Hibernate框架和HQL查询语言实现用户登录
【任务描述】
使用Hibernate框架和HQL查询语言实现用户登录功能,并区别超级用户或普通用户。
【任务实施】
1.配置程序开发环境
首先新建动态Web项目task7-5,在该项目中创建包package075。
然后按照【操作必备】中介绍的方法导入Hibernate支持类库、Servlet支持类库servlet-api.jar、数据库驱动包sqljdbc4.jar,创建Hibernate的配置文件hibernate.cfg.xml文件。
2.创建用户实体类(持久化类)
在包package075中创建
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 07 单元 基于 Hibernate Web 应用程序 开发