一个 JBoss 项目
红帽

操作指南

使用 Hibernate 工具开发应用程序

Hibernate Tools 是针对与 Hibernate 5 及更早版本相关的项目的工具集合。该工具提供 Eclipse 插件,用于反向工程、代码生成、可视化和与 Hibernate 交互。使用 Hibernate Tools 轻松生成、测试并建立 Hibernate 或 JPA 映射项目的原型。您还可以使用 Hibernate 运行查询、浏览映射并为数据项目生成代码。

创建 JPA 项目并连接到 Sakila-h2 数据库

先决条件

连接到 sakila-h2 数据库

  1. 从 <<https://github.com/maxandersen/sakila-h2,Sakila 数据库的 h2 版本>> 下载 sakila-h2 数据库。

  2. 在终端中,导航到保存 sakila-h2.jar 文件的目录,并运行以下命令启动数据库:$ ./runh2.sh

创建 JPA 项目并连接到数据库

  1. 在工作区中,单击 文件 > 新建 > 其他,然后搜索 JPA 项目,并双击以打开 新建 JPA 项目 向导。

  2. 新建 JPA 项目 向导中

    1. 项目名称 栏位中,键入项目的名称。

    2. 目标运行时 字段中,单击您希望使用的运行时服务器。

    3. JPA 版本 列表中,单击 2.1

  3. 单击 下一步

    Create a New JPA Project
    图 1. 创建新建 JPA 项目
  4. Java 配置为构建 Java 应用程序而配置项目 窗口中,选择构建路径上的源文件夹,然后单击 下一步

  5. JPA 小模块 窗口中,单击 添加连接

  6. 新建连接配置文件 窗口中

    1. 单击 通用 JDBC

    2. 名称 字段中,键入 sakila

  7. 单击 下一步

  8. 单击 驱动程序 字段旁边的新建驱动器定义图标 (image::hibernate_dev_app_newdriverdef_icon.png)[New Driver Definition Icon])。

  9. 单击 名称/类型 选项卡,单击 通用 JBDC 驱动程序,然后单击 JAR 列表 选项卡。

  10. 单击 添加 JAR/Zip,然后选择先前下载的 sakila-h2.jar 文件。

    Select sakila-h2.jar File
    图 2. 选择 sakila-h2.jar 文件
  11. 单击 属性选项卡并在 属性表中输入以下详细信息

    1. 单击 连接 URL并键入 jdbc:h2:tcp://127.0.0.1/sakila

    2. 单击 驱动程序类,然后单击省略号图标 ![省略号图标](https://access.redhat.com/sites/default/files/images/hibernate_dev_app_ellipses_icon.png)

    3. 可用 Jar 列表中的类窗口中单击 浏览类。在找到必需的驱动程序时单击 确定

    4. 单击 用户 ID,键入 sa

  12. 新驱动程序定义窗口中单击 确定

  13. 新连接配置文件窗口中单击 完成以返回到 JPA 构面窗口。

  14. 平台列表中单击 Hibernate (JPA 2.1)

  15. JPA 实现窗格 类型列表中,单击 用户库,然后单击 管理库 (![管理库图标](https://access.redhat.com/sites/default/files/images/hibernate_dev_app_manage_libraries.png))。在 首选项(已过滤)窗口中添加库,或单击 禁用库配置

  16. 单击 完成

结果:项目资源管理器视图中创建并列出项目。

生成 DDL 和实体

DDL(数据定义语言)是一种定义数据结构的语法。在 Eclipse JPA 项目中生成 DDL 和实体可启用 Hibernate 运行时支持。

生成 DDL 和实体

  1. 项目资源管理器视图中,右键单击 {project_name}

  2. 单击 JPA 工具 > 从实体生成表从表生成实体。将会显示 生成实体窗口(或 从实体生成表窗口)。

  3. 生成实体窗口中

    1. 输出目录字段中,根据需要更改默认目录。

    2. 也可以在 字段中键入包名称。

    3. 确保已选中 使用控制台配置复选框。

    4. 控制台配置列表中,确保显示了相关的配置。

  4. 单击 完成

    Generate Entities
    图 3. 生成实体

创建 Hibernate 映射文件

Hibernate 映射文件指定了对象与数据库表之间的关系。要为属性和关联关系创建基本映射,即生成 .hbm.xml 文件

  1. 创建一个新的 Hibernate 映射文件

    1. 单击 文件 > 新建

    2. 新建向导中,找到 Hibernate,然后单击 Hibernate XML 映射文件 (hbm.xml)

  2. 单击 下一步

  3. 新建 Hibernate XML 映射文件 (hbm.xml)窗口中

    1. 单击 添加类以添加类,或单击 添加包以添加包。

注: 您可以通过不选择任何包或类来创建一个空的 .hbm 文件。空 .hbm 文件将创建于指定位置。

  1. 单击 深度控制 复选框以定义在选择类时使用的依赖深度。

  2. 单击 下一步

  3. 选择目标文件夹位置。

  4. 文件名 栏中,为文件键入名称,然后单击 完成

结果: hibernate.hbm.xml 文件将在默认编辑器中打开。

创建 Hibernate 配置文件

对于逆向工程、原型查询或仅使用 Hibernate Core,需要 hibernate.propertieshibernate.cfg.xml 文件。如果需要,Hibernate Tools 提供一个向导,以生成 hibernate.cfg.xml 文件。

要创建 Hibernate 配置文件

  1. 创建一个新 cfg.xml 文件

    1. 单击 文件  新建  其他

    2. 新建 向导中,找到 Hibernate,然后单击 Hibernate 配置文件 (cfg.xml)

  2. 单击 下一步

  3. 创建 Hibernate 配置文件 (cfg.xml) 窗口中,为文件选择目标文件夹,然后单击 下一步

  4. Hibernate 配置文件 (cfg.xml) 窗口中

    1. 容器 栏在默认情况下显示容器文件夹。

    2. 文件名 栏在默认情况下显示配置文件名称。

    3. 数据库方言 列表中,单击相应数据库。

    4. 驱动器类 列表中,单击对应于您刚刚选择的数据库方言的驱动器类。

    5. 连接 URL 列表中,单击相应的 URL。

    6. 单击 创建控制台配置 复选框,以使用 hibernate.cfg.xml 文件作为控制台配置的基础。

  5. 单击 完成

    Create a New cfg.xml File
    图 4. 创建新的 cfg.xml 文件

结果:hibernate.cfg.xml 文件将在默认编辑器中打开。

创建 Hibernate 控制台配置

控制台配置描述了 Hibernate 插件如何配置 Hibernate。它还描述了加载 POJO、JDBC 驱动程序等所需的配置文件和类路径。它需要用于查询原型、逆向工程和代码生成。每个项目可以有多个控制台配置,但对于大多数要求而言,一个配置就足够了。

要创建 Hibernate 控制台配置

  1. 创建一个 cfg.xml 文件

    1. 单击 文件  新建  其他

    2. 新建 向导中,找到 Hibernate,然后单击 Hibernate 配置文件 (cfg.xml)

  2. 单击 下一步

  3. 创建 Hibernate 配置 窗口中,主要 选项卡

    1. 名称 栏中,可以根据需要编辑提供的默认生成名称。

    2. 类型 栏中,单击 核心

    3. Hibernate 版本 列表中,选择相应版本。

    4. 项目 字段中,键入项目名称或单击 浏览 定位现有项目。

    5. 数据库连接 字段中,单击 新建 配置新的数据库连接或保持原样以使用默认连接。

    6. 属性文件 字段中,单击 设置 设置在所选项目中找到的第一个 *hibernate.properties* 文件的路径(详细步骤请参阅您需要知道的信息,设置属性文件 部分)。创建后,* .properties* 文件的路径将显示在 属性文件 字段中。

    7. 配置文件 字段中,单击 设置 设置在所选项目中找到的第一个 *hibernate.cfg.xml* 文件的路径(详细步骤请参阅您需要知道的信息,设置配置文件 部分)。创建后,*hibernate.cfg.xml* 文件的路径将显示在 配置文件 字段中。

  4. 单击 完成

Create Hibernate Console
图 5. 创建 Hibernate 控制台

修改 Hibernate 配置

您可以从 Hibernate 配置 视图编辑 Hibernate 配置。

若要修改 Hibernate 配置

  1. 单击 窗口  显示视图  其他,然后单击 Hibernate 配置

  2. Hibernate 配置 视图中,右键单击 {project_name},然后单击 编辑配置

  3. 将显示 编辑启动配置属性 窗口。编辑字段。

  4. 若要关闭 Hibernate 配置 视图,请右键单击该配置,然后单击 关闭配置

生成代码和逆向工程

Hibernate 工具的逆向工程和代码生成特性使您能够根据数据库或现有的 Hibernate 配置生成一系列工件,例如,映射文件或带注释的类。这些生成的工件中可以有 POJO Java 源文件、*hibernate.hbm.xml* 文件、*hibernate.cfg.xml* 生成和模式文档。

若要生成代码

  1. 配置 Hibernate

    1. 单击 窗口  透视图  打开透视图  其他

    2. 搜索 Hibernate,然后双击它。将出现 Hibernate 配置 视图。

  2. 查看 Hibernate 代码生成配置

    1. 在工具栏中,单击 运行 图标旁边的向下箭头。

    2. 单击 Hibernate 代码生成配置

  3. 展开 Hibernate 代码生成,然后单击 New_configuration

  4. 创建、管理和运行配置 窗口中的 名称 字段中,键入代码生成启动器的逻辑名称。如果您未指定名称,将使用默认名称 New_Generation

  5. 主要 选项卡中,输入以下详细内容

    至少必须选择一个导出程序选项警告表示,要使用启动器,您必须在“导出程序”选项卡中选择一个导出程序。在您选择一个导出程序后,警告将消失。

    1. 控制台配置列表中,单击在生成代码时要使用的控制台配置名称。

    2. 输出目录字段中,单击浏览并选择一个输出目录。这是所有输出将被写入到的默认位置。您可以输入绝对目录路径,例如:d:/temp。请注意,如果未指定正确的目录,将会覆盖现有文件。

    3. 要逆向生成在连接信息中定义的数据库,请单击从 JDBC 连接进行逆向工程复选框。当使用此选项时,JBoss Developer Studio 将根据数据库架构生成代码。如果未启用此选项,代码生成将基于 Hibernate 控制台配置中指定现有的映射。

    4. 字段中,为逆向生成时发现的任何实体添加默认包名称。

    5. reveng.xml字段中,单击设置以选择现有的reveng.xml文件,或创建一个新的。此文件控制逆向工程进程的某些方面,例如

      • JDBC 类型如何映射到 Hibernate 类型

      • 哪些表被包含或排除在进程之外

    6. reveng.strategy字段中,单击浏览并提供 ReverseEngineeringStrategy 的实现。如果reveng.xml文件无法提供足够的自定义,则必须这样做;此类必须在控制台配置的类路径中,否则,您会收到未找到类的异常。

      有关所选复选框的详细信息,请参阅您知道吗?,创建、管理和运行配置窗口,主选项卡,复选框小节。

    7. 导出程序选项卡指定生成的代码类型。每个选择代表生成代码的导出程序。在导出程序选项卡中

      • 单击使用 Java 5 语法复选框,为导出程序使用 Java 5 语法

        • 单击生成 EJB3 注释复选框,以生成 EJB 3 注释

        • 导出程序表中选择导出程序。有关导出程序的详细信息,请参阅您知道吗?,导出程序小节。

          在上一步中选择的每个导出程序都使用可以在属性部分中设置的某些属性。在属性部分中,您可以为每个导出程序添加和删除预定义或自定义属性。

  6. 点击属性表旁边的添加为选定的导出器添加属性。在弹出的对话框中,从建议的列表中选择属性及其合适的值。有关属性及其值,请参阅 Did You Know 的 Exporter 属性及其值 部分。

  7. 点击刷新选项卡并输入以下内容

    1. 勾选在完成时刷新资源以刷新资源并点击以下任一选项

      • 整个工作空间:刷新整个工作空间。

      • 选定的资源:仅刷新选定的资源。

      • 包含选定的资源的项目:刷新包含选定资源的项目。

      • 包含选定的资源的文件夹:刷新包含选定资源的文件夹。

      • 特定资源:刷新特定资源;然后点击指定资源以打开编辑工作集窗口并选中工作集。

    2. 勾选递归包含子文件夹以刷新子文件夹。

  8. 点击通用选项卡并输入以下内容

    1. 另存为面板中,点击本地文件将配置保存为本地文件,或点击共享文件并选择一个共享文件位置。

    2. 在收藏夹菜单中显示面板中,点击菜单以显示配置。

    3. 编码面板中,点击希望配置编码的格式。

    4. 标准输入和输出面板中,勾选分配控制台复选框并(可选)勾选输入文件输出文件复选框并选择相关选项。

    5. 勾选在后台启动复选框以在后台显示配置启动进度。

  9. 点击应用然后点击运行

你想知道 {#dyk}

设置属性文件 # {#setup_property_file}

设置属性文件

  1. 创建 Hibernate 配置窗口的选项卡中,点击设置

  2. 设置属性文件窗口中,点击新建以创建一个新属性文件(或点击使用现有的以将现有文件选择为属性文件)。

  3. 创建 Hibernate 属性文件(.properties)窗口中,点击父文件夹名字然后点击完成

设置配置文件 ## {#setup_config_file}

设置配置文件

  1. 创建 Hibernate 配置窗口的选项卡中,点击设置

  2. 设置配置文件窗口中,单击使用现有选择一个现有文件作为属性文件(或单击新建新建一个属性文件)。

  3. 选择 hibernate.cfg.xml 文件窗口中,展开父文件夹,选择要作为hibernate.cfg.xml文件的文件,然后单击确定

创建、管理和运行配置窗口,主选项卡,复选框 # {#main_tab_checkboxes}

以下复选框在创建、管理和运行配置窗口的选项卡中默认选中:

  • 生成基本的类型化复合 ID:当表有多列主键时,将始终创建一个<composite-id>映射。如果启用此选项且存在匹配的外键,则每个键列仍被视为“基本”标量(字符串、长整数等),而不是对实体的引用。如果禁用此选项,则会创建一个<key-many-to-one>属性。请注意,仍然会创建一个<many-to-one>属性,但只是将其标记为不可更新且不可插入。

  • 检测乐观锁列:自动检测乐观锁列。可通过reveng.策略控制;当前默认使用名为VERSIONTIMESTAMP的列。

  • 检测多对多表:自动检测多对多表。可通过reveng.策略控制。

  • 检测一对一的关联:反向工程通过主键检测一对一的关联,hbm.xml文件和注释生成都会为此生成正确的代码。默认情况下会启用检测(Seam 1.2 和 Seam 2.0 以外的反向工程除外)。对于 Hibernate Tools 生成,有一个复选框用于禁用此功能(如果不需要)。

导出器属性及其值 # {#exporter_values}

  • jdj5:生成 Java 5 语法

  • ejb3:生成 EJB 3 注释

  • for_each:指定导出器应该创建哪个类型的模型元素的文件并使用模板运行。可能的值有:entity(实体)、component(组件)、configuration(配置)。

  • template_path:为特定导出器创建自定义模板目录。可以使用 Eclipse 变量。

  • template_name:模板相对于模板路径的名称。

  • outputdir:特定导出器的自定义输出目录。可以使用 Eclipse 变量。

  • file_pattern:用于生成的文件的模式,路径相对于输出目录。示例:{package-name}/{class-name}.java。

  • Dot.executable:运行 GraphViz 的可执行文件(仅相关,但对于模式文档是可选的)。

  • Drop:输出将包含表的 drop 语句、索引和约束。

  • delimiter:用于输出文件。

  • create:输出将包含表的 create 语句、索引和约束。

  • scriptToConsole:脚本将输出到控制台。

  • exportToDatabase:对数据库执行生成的语句。

  • outputFileName:如果指定,语句将转储到此文件。

  • haltOnError:如果出现错误,则会停止生成过程。

  • Format:对语句应用基本格式设置。

  • schemaUpdate:更新方案。

  • query:HQL 查询模板

导出器 # {#exporter}

  • Domain 代码 (.java):为在给定的 Hibernate 配置中找到的所有持久类和组件生成 POJO。

  • Hibernate XML 映射 (.hbm.xml):为每个实体生成映射 (hbm.xml) 文件。

  • DAO 代码 (.java):为找到的每个实体生成一组 DAO。

  • 通用导出器 (<hbmtemplate>):生成一个完全可定制的导出器,可用于执行自定义生成。

  • Hibernate XML 配置 (.cfg.xml):生成**hibernate.cfg.xml** 文件;用于使用任何新发现的映射文件更新**hibernate.cfg.xml** 文件。

  • Schema 文档 (.html):生成一组 HTML 页面,对数据库 schema 和一些映射进行文档化。

  • Schema 导出 (.ddl):生成适当的 SQL DDL,并允许你将结果存储在文件或直接导出到数据库。

  • HQL 查询执行导出器:生成一个 HQL 查询,根据给定的属性而定。

故障排除

加载数据库 driverclass 时的问题

![数据库 driverclass 加载时出现问题警告](https://access.redhat.com/sites/default/files/images/hibernate_dev_app_error_msg.png)

错误消息:加载数据库 driverclass (org.h2.Driver) 时出现问题

解决方案:为避免此错误,你必须在**数据库连接**下拉框中选择一个预定义的 DTP 连接配置文件。此外,如果你不想在项目类路径中存在该 jar,可以在**控制台配置**向导的**类路径**页面上添加该 jar。

  1. 右键单击 {project_name} > **属性** > **Java 构建路径**。

  2. 单击**库**选项卡,然后单击**添加外部 jar**。

  3. 导航到已下载的数据库 JAR 文件,然后单击**确定**。

  4. 在**{project_name} 的属性**窗口中,单击**应用**,然后单击**确定**。

返回顶部