




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验六实验六 hibernate 技术技术 在本实验中 将使用 NetBeans IDE 创建和部署显示数据库中数据的 Web 应用程序 该 Web 应用程序使用 Hibernate 框架作为持久层 用于检索简单传统 Java 对象 POJO 并将其存储到关系 数据库中 Hibernate 是一个为对象关系映射 ORM 提供工具的框架 本教程演示如何将 Hibernate 框架 支持添加到 IDE 中并创建必要的 Hibernate 文件 创建 Java 对象并将应用程序配置为使用 Hibernate 之后 向 Web 页中添加 Visual Web JSF 组件以显示数据 本次实验有以下内容本次实验有以下内容 1 创建数据库 2 创建 Web 应用程序项目 3 修改 Hibernate 配置文件 4 创建 Java 对象 a 创建 Person Java 类 b 创建 Trip Java 类 5 将类映射到数据库表 a 将 Person java 映射到 PERSON 表 b 将 Trip java 映射到 TRIP 表 6 创建 Hibernate Helper 类 7 创建 Visual Web JSF 页面 8 将 Visual Web JSF 组件添加到页面中 9 从 SessionBean1 访问数据源 10 将组件绑定到数据 11 运行项目 本次实验需要具备以下软件和资源 本次实验需要具备以下软件和资源 软件或资源软件或资源要求的版本要求的版本 NetBeans IDE6 7 Java 版本 Java 开发工具包 Java Development Kit JDK 版本 6 或版本 5 JavaServer Faces 组件 Java EE 平台 1 2 带有 Java EE 5 或 1 1 带有 J2EE 1 4 GlassFish 应用服务器V2 MySQL 数据库服务器版本 5 x Sakila 数据库可以从更新中心获取插件 创建数据库创建数据库 本实验使用一个名为 sakila 的 MySQL 数据库 这是一个免费的 MySQL 数据库 可从 MySQL 网 站获得 安装 IDE 时并未包含 sakila 数据库 因此首先需要创建该数据库 以继续本实验 要创建 sakila 数据库 可使用 插件 管理器下载并安装 Sakila 样例数据库 插件 安装该插件后 sakila 数据库即被添加到 创建 MySQL 数据库 对话框的数据库列表中 1 打开 插件 管理器并安装 Sakila 样例数据库 插件 2 安装插件后 在 服务 窗口展开 数据库 节点以启动 MySQL 数据库 右键单击 MySQL 服务 器 节点并选择 启动 3 右键单击 MySQL 服务器 节点并选择 创建数据库 4 在 创建 MySQL 对话框的 新数据库名称 下拉列表中选择 Sakila 数据库 单击 确定 单击 确定 MySQL 服务器 节点下将出现一个 Sakila 节点 5 右键单击 Sakila 节点并选择 连接 单击 连接 Sakila 数据库 jdbc mysql localhost 3306 sakila username on Default 的数据库连接节点将列示于 数据库 节点下方 打开连接时 可通过展开该连接节点查看 数据库中数据 创建创建 Web 应用程序项目应用程序项目 在本实验中 将创建一个 Web 应用程序项目并为该项目添加 Hibernate 库 创建该项目时 请在 新建项目 向导的 框架 面板中选择 Hibernate 并指定数据库 1 选择 文件 新建项目 Ctrl Shift N 从 Java Web 类别中选择 Web 应用程序 并单击 下一步 2 键入 DVDStore 作为项目名称 并设置项目位置 3 取消选中 使用专用的文件夹来存储库 选项 如果该选项处于选中状态 在本实验中 没理由将项目库复制到一个专用文件夹中 因为您不需要和其他用户一起共享库 单击 下一步 4 将服务器设置为 Apache Tomcat 6 0 18 并将 Java EE 版本设置为 Java EE 5 单击 下一 步 5 选中 Hibernate 3 2 5 复选框 6 从 数据库连接 下拉列表中选择 sakila 数据库 单击 完成 注意 注意 如果向导的 框架 面板中没有 sakila 数据库这一选项 请查看该连接是否列示于 服务 窗口的 数据库 节点下 如果此处没有该连接 则需要创建数据库连接 单击 完成 IDE 会创建 Web 应用程序并在编辑器中打开 hibernate cfg xml 文件和 index jsp 展开 项目 窗口中的 库 节点 可以看到 IDE 已向项目中添加了 Hibernate 库 修改修改 Hibernate 配置文件配置文件 创建使用 Hibernate 框架的新项目时 IDE 自动在应用程序的上下文类路径的根路径 文件 窗口中 的 Web INF classes 上创建 hibernate cfg xml 配置文件 该文件位于 项目 窗口的 配置文件 节点下 该配置文件包含有关数据库连接 资源映射和其他连接属性的信息 可使用多视图编辑器编辑 文件 或直接在 XML 编辑器中编辑 XML 在本实验中 将编辑 hibernate cfg xml 中指定的缺省属性 以启用 SQL 语句的调试日志 并启 用 Hibernate 会话的上下文管理 1 在 设计 标签中打开 hibernate cfg xml 可以通过展开 项目 窗口的 配置文件 节点并双 击 hibernate cfg xml 来打开该文件 2 在 可选属性 下 展开 配置属性 节点 3 单击 添加 以打开 添加 Hibernate 属性 对话框 4 在对话框中 选择 hibernate show sql 属性并将值设为 true 这样就启用了 SQL 语句的 调试日志 5 展开 其他属性 节点并单击 添加 6 在对话框 选择 属性 hibernate current session context class 并将值设为 thread 以启用 Hibernate 自动的会话上下文管理 如果单击编辑器中的 XML 标签 则可以在 XML 视图中看到此文件 该文件应该如下所示 org hibernate dialect MySQLDialect com mysql jdbc Driver jdbc mysql localhost 3306 sakila root true thread 7 保存对该文件所做的更改 创建创建 HibernateUtil java Helper 文件文件 要使用 Hibernate 您需要创建一个 helper 类 该类处理启动并访问 Hibernate 的 SessionFactory 以获取 会话 对象 该类调用 configure 并加载 hibernate cfg xml 配置 文件 然后构建 SessionFactory 以获取 会话 对象 在实验中 使用 新建文件 向导创建 helper 类 HibernateUtil java 1 右键单击 源包 节点并选择 新建 其他 打开 新建文件 向导 2 从 类别 列表中选择 Hibernate 从 文件类型 列表中选择 HibernateUtil java 单击 下一步 3 键入 HibernateUtil 作为类名 并键入 dvdrental 作为包名 单击 完成 单击 完成 后 编辑器将打开 HibernateUtil java 由于不需要编辑该文件 因此可以关闭该文件 生成生成 Hibernate 映射文件和映射文件和 Java 类类 在本实验中 将使用一个 POJO 简单传统 Java 对象 来表示您将要用到的数据库中的每个表中的数 据 Java 类指定表的列字段 并使用简单的 setter 和 getter 方法检索数据和写数据 要将该 POJO 映射到表 可使用 Hibernate 映射文件或使用类标注 可在 数据库 向导中使用 Hibernate 映射文件 和 POJO 创建多个 POJO 和基于选定数据库表的映 射文件 或使用 IDE 向导帮助您从头开始单独地创建每个 POJO 和映射文件 在数据库中创建在数据库中创建 Hibernate 映射文件和映射文件和 POJO 在数据库中创建 Hibernate 映射文件和 POJO 向导生成基于数据库表的文件 使用该向导时 选择 希望从中创建 POJO 和映射文件的所有表 IDE 然后根据该数据库表生成文件并将映射条目添加到 hibernate cfg xml 使用向导时可选择希望 IDE 生成的文件 比如 只生成 POJO 并选择代码 生成选项 比如 生成使用 EJB 3 标注的代码 1 在 项目 窗口中右键单击 源包 节点 并选择 新建 其他 以打开 新建文件 向导 2 在 Hibernate 类别的数据库中选择 Hibernate 映射文件和 POJO 单击 下一步 3 保留 名称和位置 面板的缺省值 单击 下一步 4 在 配置文件 下拉列表中选择 hibernate cfg xml 如果尚未选定 5 从 可用表 中选择以下表 并单击 添加 将表添加到 选定表 oactor ocategory ofilm ofilm actor ofilm category olanguage 单击 下一步 6 在 常规设置 选项中选择 JDK 5 语言功能语言功能 7 确保 域代码域代码 和 Hibernate XML 映射映射 选项为选定项 8 选择 dvdrental 作为包名 单击 完成 单击 完成 IDE 生成 POJO 和 Hibernate 映射文件 其字段映射到选定表的列中 IDE 也添加映射 条目到 hibernate cfg xml 中 展开 dvdrental 包查看由向导生成的文件 该向导也生成了一个 hibernate reveng xml 逆向工程文件并以编辑器中打开了该文件 可将该逆 向工程文件关闭 因为无需对其进行编辑 创建创建 Hibernate Helper 类类 现在 您将在 dvdrental 包中创建另一个 helper 类 将用于在数据库中执行 Hibernate 查询 您 将使用 Hibernate 查询语言 HQL 编辑器来构造并测试用于检索数据的查询 测试了查询后 将 在构造并运行查询的 helper 类中创建方法 随后将从 JSP 文件中调用 helper 类的方法 创建类创建类 这一部分中 使用 新建文件 向导在 dvdrental 包中创建 helper 类 FilmHelper java 您将通过 调用 HibernateUtil java 中的 getSessionFactory 来创建一个 Hibernate 会话 并创建一些 helper 方法以创建查询来检索数据库中的数据 将从 JSP 页面中调用这些 helper 方法 1 右键单击 dvdrental 源包节点 并选择 新建 Java 类 以打开 新建文件 向导 2 键入 FilmHelper 作为类名 单击 完成 3 添加以下代码 粗体 创建一个 Hibernate 会话 4 public class FilmHelper 5 6 Session session null 7 8 public FilmHelper 9 this session HibernateUtil getSessionFactory getCurrentSession 10 11 12 修复导入并保存更改 现在将修改 FilmHelper java 以添加查询数据库的 helper 方法 使用使用 HQL 查询枚举查询枚举 Film 标题标题 在此实验中 您将创建一个 HQL 查询 该查询对数据库进行查询以检索基于 filmid 主键的记录 将 使用 Hibernate 查询语言 HQL 来查询数据库中的记录 Sakila 数据库中的 Film 表有 1000 条记 录 因而我们创建的方法应能够检索基于 filmid 主键的记录 1 在 项目 窗口中右键单击 hibernate cfg xml 并选择 运行 HQL 查询 以打开 HQL 查询编 辑器 2 从工具栏的下拉列表中选择 hibernate cfg 3 在编辑器中键入以下内容并单击工具栏中的 运行 HQL 查询 按钮 来测试该连接 from Film 单击 运行 HQL 查询 可在 HQL 查询编辑器的 botton 窗口看到查询结果 如果单击 SQL 按钮 可以看到起相同作用的 SQL 查询 select film0 film id as col 0 0 from sakila film film0 4 键入以下查询在 film id 为 100 到 200 的 Film 表中检索记录 from Film as film where film filmID between 100 and 200 结果窗口中显示了一个记录列表 测试过该查询可返回期待的结果后 可在 helper 类中使用该 查询 5 将以下方法添加到 FilmHelper java 以检索 film 其中 film id 介于由变量 startID 和 endID 所指定的特定范围之间 public List getFilmTitles int startID int endID List filmList null try org hibernate Transaction tx session beginTransaction Query q session createQuery from Film as film where film filmId between startID and endID filmList List q list catch Exception e e printStackTrace return filmList 6 修复导入并保存更改 修复导入时 要选择 java util List 和 org hibernate Query 枚举枚举 Actors 使用 使用 HQL Sub 查询 查询 在最后一个节中 将创建一个简单的 HQL 查询以枚举记录 现在要使用 sub 查询查询多个表 获取 参与一个特定 film 的 actor 然后要将一个方法添加到 helper 类 该类包含一个 sub 查询用于从 actor 表和 film actor 表中获取记录 1 在 HQL 查询编辑器中键入以下查询以测试该查询 from Actor as actor where actor actorID in select actorID from FilmActor filmActor where filmActor filmId 10 此查询检索 film 中 filmid 10 的 actor 2 现在可以创建一个使用 filmID 作为输入变量构造查询的方法 getActorsByID public List getActorsByID int filmId List actorList null try org hibernate Transaction tx session beginTransaction Query q session createQuery from Actor as actor where actor actorID in select actorID from FilmActor filmActor where filmActor filmID filmId actorList List q list catch Exception e e printStackTrace return actorList 添加额外的添加额外的 helper 方法方法 现在将添加一些额外的 helper 方法 创建基于输入变量的查询 可在 HQL 查询编辑器中检查这些查 询 1 添加以下方法以根据 filmId 检索类别列表 public Category getCategoryByID int filmId List categoryList null try org hibernate Transaction tx session beginTransaction Query q session createQuery from Category as category where category categoryID in select categoryID from FilmCategory filmCat where filmCat filmID filmId categoryList List q list catch Exception e e printStackTrace return categoryList get 0 2 添加以下方法以根据 filmId 检索 film 列表 public Film getFilmByID int filmId Film film null List filmList null try org hibernate Transaction tx session beginTransaction Query q session createQuery from Film as film where film filmID filmId filmList List q list film Film filmList get 0 catch Exception e e printStackTrace return film 3 添加以下方法以根据 langID 检索语言列表 public String getLangByID int langID String language null List langList null try org hibernate Transaction tx session beginTransaction Query q session createQuery from Language as lang where lang languageID langID langList List q list language Language langList get 0 getLanguage catch Exception e e printStackTrace return language 现在 您已经为应用程序创建了所有类 下一步 您将创建 JSP 页面并调用 FilmHelper java 中的 helper 方法 创建创建 Web 页面页面 创建类之后 可以创建用于显示和修改数据的 Web 页 将修改 index jsp 以列示 film 并创建 browse jsp 以显示选定 film 的详情 修改修改 index jsp 1 展开 项目 窗口的 Web 页面文件夹 并在编辑器中打开 index jsp 2 将以下导入标签 粗体 添加到 JSP 页面以加载所需 Java 类 3 在 body 标签中间添加以下内容 粗体 4 添加以下内容 粗体 以生成表来显示检索到的条目 int filmTitlesSize filmTitles size out print if RECORD START PAGE out print Next else if RECORD END PAGE out print Prev else out print PrevNext out print TitleDescription for int i 0 i filmTitlesSize i Film film Film filmTitles get i int filmID film getFilmId out print out print film getTitle out print film getDescription out print More out print Rent out print out print 5 保存所做的更改 现在 您的 Web 页已具备了必要的组件 现在 需要将这些组件绑定到数据源 创建创建 browse jsp 现在需要创建一个 JSP 页面用来浏览详情 1 在 项目 窗口中右键单击 DVDStore 并选择 新建 New JSP 2 键入 browse 作为 JSP 文件名 3 单击 完成 单击 完成 编辑器中打开了文件 browse jsp 4 将导入标签 粗体 添加到 JSP 页面 5 添加以下代码 粗体 获取标题 Id 6 添加以下代码 粗体 调用类方法 filmID Integer parseInt request getParameter id boolean startPage false boolean endPage false FilmHelper helper new FilmHelper Film film helper getFilmByID filmID String filmTitle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省2025云南红河州泸西县急需紧缺人才公开招聘(5人)笔试历年参考题库附带答案详解
- 2025湖北交投实业发展有限公司服务区管理员遴选80人笔试参考题库附带答案详解
- 2025新疆果业集团有限公司招聘36人笔试参考题库附带答案详解
- 2025年国网四川省电力公司技能定向招聘90人笔试参考题库附带答案详解
- 2025四川长虹佳华信息产品有限责任公司招聘媒介运营总监等岗位10人笔试参考题库附带答案详解
- 2025华电新能源集团股份有限公司面向系统内招聘10人笔试参考题库附带答案详解
- 2025京东方科技集团股份有限公司全球校园招聘正式启动笔试参考题库附带答案详解
- 2025中国建筑地勘中心陕西总队招聘(13人)笔试参考题库附带答案详解
- 危险废物生产安全培训课件
- 危险品仓库安全培训小结课件
- 幼儿烫伤课件教学课件
- 国家职业技术技能标准 6-29-01-01 砌筑工 人社厅发20235号
- 部编版一年级语文上册全册教案
- 离婚协议书2个儿子的模板
- 人工智能训练师理论知识考核要素细目表二级
- 食品安全管理制度图
- 大学英语六级考试
- Politeness Principle第九课礼貌原则
- 婴幼儿心理学
- MOOC 成长中的音乐徜徉-浙江师范大学 中国大学慕课答案
- 基金考点大全及详解双色考点
评论
0/150
提交评论