Hibernate Tools 是针对与 Hibernate 5 及更早版本相关的项目的工具集合。该工具提供 Eclipse 插件,用于反向工程、代码生成、可视化和与 Hibernate 交互。使用 Hibernate Tools 轻松生成、测试并建立 Hibernate 或 JPA 映射项目的原型。您还可以使用 Hibernate 运行查询、浏览映射并为数据项目生成代码。
创建 JPA 项目并连接到 Sakila-h2 数据库
先决条件
连接到 sakila-h2 数据库
-
从 <<https://github.com/maxandersen/sakila-h2,Sakila 数据库的 h2 版本>> 下载 sakila-h2 数据库。
-
在终端中,导航到保存
sakila-h2.jar
文件的目录,并运行以下命令启动数据库:$ ./runh2.sh
。
创建 JPA 项目并连接到数据库
-
在工作区中,单击
文件
>新建
>其他
,然后搜索JPA 项目
,并双击以打开新建 JPA 项目
向导。 -
在
新建 JPA 项目
向导中-
在
项目名称
栏位中,键入项目的名称。 -
在
目标运行时
字段中,单击您希望使用的运行时服务器。 -
在
JPA 版本
列表中,单击2.1
。
-
-
单击
下一步
。图 1. 创建新建 JPA 项目 -
在
Java 配置为构建 Java 应用程序而配置项目
窗口中,选择构建路径上的源文件夹,然后单击下一步
。 -
在
JPA 小模块
窗口中,单击添加连接
。 -
在
新建连接配置文件
窗口中-
单击
通用 JDBC
。 -
在
名称
字段中,键入sakila
。
-
-
单击
下一步
。 -
单击
驱动程序
字段旁边的新建驱动器定义图标 (image::hibernate_dev_app_newdriverdef_icon.png)[New Driver Definition Icon])。 -
单击
名称/类型
选项卡,单击通用 JBDC 驱动程序
,然后单击JAR 列表
选项卡。 -
单击
添加 JAR/Zip
,然后选择先前下载的 sakila-h2.jar 文件。图 2. 选择 sakila-h2.jar 文件 -
单击
属性
选项卡并在属性
表中输入以下详细信息-
单击
连接 URL
并键入jdbc:h2:tcp://127.0.0.1/sakila
。 -
单击
驱动程序类
,然后单击省略号图标  -
在
可用 Jar 列表中的类
窗口中单击浏览类
。在找到必需的驱动程序时单击确定
。 -
单击
用户 ID
,键入sa
。
-
-
在
新驱动程序定义
窗口中单击确定
。 -
在
新连接配置文件
窗口中单击完成
以返回到JPA 构面
窗口。 -
在
平台
列表中单击Hibernate (JPA 2.1)
。 -
在
JPA 实现
窗格类型
列表中,单击用户库
,然后单击管理库
()。在首选项(已过滤)
窗口中添加库,或单击禁用库配置
。 -
单击
完成
。
结果:
在 项目资源管理器
视图中创建并列出项目。
生成 DDL 和实体
DDL(数据定义语言)是一种定义数据结构的语法。在 Eclipse JPA 项目中生成 DDL 和实体可启用 Hibernate 运行时支持。
生成 DDL 和实体
-
在
项目资源管理器
视图中,右键单击 {project_name}。 -
单击
JPA 工具
>从实体生成表
或从表生成实体
。将会显示生成实体
窗口(或从实体生成表
窗口)。 -
在
生成实体
窗口中-
在
输出目录
字段中,根据需要更改默认目录。 -
也可以在
包
字段中键入包名称。 -
确保已选中
使用控制台配置
复选框。 -
在
控制台配置
列表中,确保显示了相关的配置。
-
-
单击
完成
。图 3. 生成实体
创建 Hibernate 映射文件
Hibernate 映射文件指定了对象与数据库表之间的关系。要为属性和关联关系创建基本映射,即生成 .hbm.xml 文件
-
创建一个新的 Hibernate 映射文件
-
单击
文件
>新建
。 -
在
新建
向导中,找到Hibernate
,然后单击Hibernate XML 映射文件 (hbm.xml)
。
-
-
单击
下一步
。 -
在
新建 Hibernate XML 映射文件 (hbm.xml)
窗口中-
单击
添加类
以添加类,或单击添加包
以添加包。
-
注:
您可以通过不选择任何包或类来创建一个空的 .hbm 文件。空 .hbm 文件将创建于指定位置。
-
单击
深度控制
复选框以定义在选择类时使用的依赖深度。 -
单击
下一步
。 -
选择目标文件夹位置。
-
在
文件名
栏中,为文件键入名称,然后单击完成
。
结果:
hibernate.hbm.xml 文件将在默认编辑器中打开。
创建 Hibernate 配置文件
对于逆向工程、原型查询或仅使用 Hibernate Core,需要 hibernate.properties 或 hibernate.cfg.xml 文件。如果需要,Hibernate Tools 提供一个向导,以生成 hibernate.cfg.xml 文件。
要创建 Hibernate 配置文件
-
创建一个新 cfg.xml 文件
-
单击
。 -
在
新建
向导中,找到Hibernate
,然后单击Hibernate 配置文件 (cfg.xml)
。
-
-
单击
下一步
。 -
在
创建 Hibernate 配置文件 (cfg.xml)
窗口中,为文件选择目标文件夹,然后单击下一步
。 -
在
Hibernate 配置文件 (cfg.xml)
窗口中-
容器
栏在默认情况下显示容器文件夹。 -
文件名
栏在默认情况下显示配置文件名称。 -
在
数据库方言
列表中,单击相应数据库。 -
在
驱动器类
列表中,单击对应于您刚刚选择的数据库方言的驱动器类。 -
在
连接 URL
列表中,单击相应的 URL。 -
单击
创建控制台配置
复选框,以使用 hibernate.cfg.xml 文件作为控制台配置的基础。
-
-
单击
完成
。图 4. 创建新的 cfg.xml 文件
结果:
新 hibernate.cfg.xml 文件将在默认编辑器中打开。
创建 Hibernate 控制台配置
控制台配置描述了 Hibernate 插件如何配置 Hibernate。它还描述了加载 POJO、JDBC 驱动程序等所需的配置文件和类路径。它需要用于查询原型、逆向工程和代码生成。每个项目可以有多个控制台配置,但对于大多数要求而言,一个配置就足够了。
要创建 Hibernate 控制台配置
-
创建一个 cfg.xml 文件
-
单击
。 -
在
新建
向导中,找到Hibernate
,然后单击Hibernate 配置文件 (cfg.xml)
。
-
-
单击
下一步
。 -
在
创建 Hibernate 配置
窗口中,主要
选项卡-
在
名称
栏中,可以根据需要编辑提供的默认生成名称。 -
在
类型
栏中,单击核心
。 -
在
Hibernate 版本
列表中,选择相应版本。 -
在
项目
字段中,键入项目名称或单击浏览
定位现有项目。 -
在
数据库连接
字段中,单击新建
配置新的数据库连接或保持原样以使用默认连接。 -
在
属性文件
字段中,单击设置
设置在所选项目中找到的第一个 *hibernate.properties* 文件的路径(详细步骤请参阅您需要知道的信息,设置属性文件 部分)。创建后,* .properties* 文件的路径将显示在属性文件
字段中。 -
在
配置文件
字段中,单击设置
设置在所选项目中找到的第一个 *hibernate.cfg.xml* 文件的路径(详细步骤请参阅您需要知道的信息,设置配置文件 部分)。创建后,*hibernate.cfg.xml* 文件的路径将显示在配置文件
字段中。
-
-
单击
完成
。

修改 Hibernate 配置
您可以从 Hibernate 配置
视图编辑 Hibernate 配置。
若要修改 Hibernate 配置
-
单击
,然后单击Hibernate 配置
。 -
在
Hibernate 配置
视图中,右键单击 {project_name},然后单击编辑配置
。 -
将显示
编辑启动配置属性
窗口。编辑字段。 -
若要关闭
Hibernate 配置
视图,请右键单击该配置,然后单击关闭配置
。
生成代码和逆向工程
Hibernate 工具的逆向工程和代码生成特性使您能够根据数据库或现有的 Hibernate 配置生成一系列工件,例如,映射文件或带注释的类。这些生成的工件中可以有 POJO Java 源文件、*hibernate.hbm.xml* 文件、*hibernate.cfg.xml* 生成和模式文档。
若要生成代码
-
配置 Hibernate
-
单击
。 -
搜索
Hibernate
,然后双击它。将出现Hibernate 配置
视图。
-
-
查看 Hibernate 代码生成配置
-
在工具栏中,单击
运行
图标旁边的向下箭头。 -
单击
Hibernate 代码生成配置
。
-
-
展开
Hibernate 代码生成
,然后单击New_configuration
。 -
在
创建、管理和运行配置
窗口中的名称
字段中,键入代码生成启动器的逻辑名称。如果您未指定名称,将使用默认名称New_Generation
。 -
在
主要
选项卡中,输入以下详细内容至少必须选择一个导出程序选项
警告表示,要使用启动器,您必须在“导出程序”选项卡中选择一个导出程序。在您选择一个导出程序后,警告将消失。-
在
控制台配置
列表中,单击在生成代码时要使用的控制台配置名称。 -
在
输出目录
字段中,单击浏览
并选择一个输出目录。这是所有输出将被写入到的默认位置。您可以输入绝对目录路径,例如:d:/temp。请注意,如果未指定正确的目录,将会覆盖现有文件。 -
要逆向生成在连接信息中定义的数据库,请单击从 JDBC 连接进行逆向工程复选框。当使用此选项时,JBoss Developer Studio 将根据数据库架构生成代码。如果未启用此选项,代码生成将基于 Hibernate 控制台配置中指定现有的映射。
-
在
包
字段中,为逆向生成时发现的任何实体添加默认包名称。 -
在
reveng.xml
字段中,单击设置
以选择现有的reveng.xml文件,或创建一个新的。此文件控制逆向工程进程的某些方面,例如-
JDBC 类型如何映射到 Hibernate 类型
-
哪些表被包含或排除在进程之外
-
-
在
reveng.strategy
字段中,单击浏览
并提供 ReverseEngineeringStrategy 的实现。如果reveng.xml文件无法提供足够的自定义,则必须这样做;此类必须在控制台配置的类路径中,否则,您会收到未找到类的异常。有关所选复选框的详细信息,请参阅您知道吗?,创建、管理和运行配置窗口,主选项卡,复选框小节。
-
导出程序
选项卡指定生成的代码类型。每个选择代表生成代码的导出程序。在导出程序选项卡中-
单击
使用 Java 5 语法
复选框,为导出程序使用 Java 5 语法-
单击
生成 EJB3 注释
复选框,以生成 EJB 3 注释 -
从
导出程序
表中选择导出程序。有关导出程序的详细信息,请参阅您知道吗?,导出程序小节。在上一步中选择的每个导出程序都使用可以在
属性
部分中设置的某些属性。在属性
部分中,您可以为每个导出程序添加和删除预定义或自定义属性。
-
-
-
-
点击
属性
表旁边的添加
为选定的导出器添加属性。在弹出的对话框中,从建议的列表中选择属性及其合适的值。有关属性及其值,请参阅 Did You Know 的 Exporter 属性及其值 部分。 -
点击
刷新
选项卡并输入以下内容-
勾选
在完成时刷新资源
以刷新资源并点击以下任一选项-
整个工作空间
:刷新整个工作空间。 -
选定的资源
:仅刷新选定的资源。 -
包含选定的资源的项目
:刷新包含选定资源的项目。 -
包含选定的资源的文件夹
:刷新包含选定资源的文件夹。 -
特定资源
:刷新特定资源;然后点击指定资源
以打开编辑工作集
窗口并选中工作集。
-
-
勾选
递归包含子文件夹
以刷新子文件夹。
-
-
点击通用选项卡并输入以下内容
-
在另存为面板中,点击本地文件将配置保存为本地文件,或点击共享文件并选择一个共享文件位置。
-
在在收藏夹菜单中显示面板中,点击菜单以显示配置。
-
在编码面板中,点击希望配置编码的格式。
-
在标准输入和输出面板中,勾选分配控制台复选框并(可选)勾选输入文件和输出文件复选框并选择相关选项。
-
勾选在后台启动复选框以在后台显示配置启动进度。
-
-
点击应用然后点击运行。
你想知道 {#dyk}
设置属性文件 # {#setup_property_file}
设置属性文件
-
在创建 Hibernate 配置窗口的主选项卡中,点击设置。
-
在设置属性文件窗口中,点击新建以创建一个新属性文件(或点击使用现有的以将现有文件选择为属性文件)。
-
在创建 Hibernate 属性文件(.properties)窗口中,点击父文件夹名字然后点击完成。
设置配置文件 ## {#setup_config_file}
设置配置文件
-
在创建 Hibernate 配置窗口的主选项卡中,点击设置。
-
在设置配置文件窗口中,单击使用现有选择一个现有文件作为属性文件(或单击新建新建一个属性文件)。
-
在选择 hibernate.cfg.xml 文件窗口中,展开父文件夹,选择要作为hibernate.cfg.xml文件的文件,然后单击确定。

创建、管理和运行配置窗口,主选项卡,复选框 # {#main_tab_checkboxes}
以下复选框在创建、管理和运行配置窗口的主选项卡中默认选中:
-
生成基本的类型化复合 ID:当表有多列主键时,将始终创建一个<composite-id>映射。如果启用此选项且存在匹配的外键,则每个键列仍被视为“基本”标量(字符串、长整数等),而不是对实体的引用。如果禁用此选项,则会创建一个<key-many-to-one>属性。请注意,仍然会创建一个<many-to-one>属性,但只是将其标记为不可更新且不可插入。
-
检测乐观锁列:自动检测乐观锁列。可通过reveng.策略控制;当前默认使用名为VERSION或TIMESTAMP的列。
-
检测多对多表:自动检测多对多表。可通过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 (org.h2.Driver) 时出现问题
解决方案:为避免此错误,你必须在**数据库连接**下拉框中选择一个预定义的 DTP 连接配置文件。此外,如果你不想在项目类路径中存在该 jar,可以在**控制台配置**向导的**类路径**页面上添加该 jar。
-
右键单击 {project_name} > **属性** > **Java 构建路径**。
-
单击**库**选项卡,然后单击**添加外部 jar**。
-
导航到已下载的数据库 JAR 文件,然后单击**确定**。
-
在**{project_name} 的属性**窗口中,单击**应用**,然后单击**确定**。