- 译者序
- 前言
- 本书怎么使用
- 本书排版字体约定
- 本书网站
- 致谢
- 第一部分 Hibernate 快速入门
- 第 1 章 安装和设置
- 第 2 章 映射简介
- 第 3 章 驾驭 Hibernate
- 第 4 章 集合与关联
- 第 5 章 更复杂的关联
- 第 6 章 自定义值类型
- 第 7 章 映射标注
- 第 8 章 条件查询
- 第 9 章 浅谈 HQL
- 第二部分 与其他工具的集成
- 第 10 章 将 Hibernate 连接到 MySQL
- 第 11 章 Hibernate 与 Eclipse:Hibernate Tools 使用实战
- 第 12 章 Maven 进阶
- 第 13 章 Spring 入门:Hibernate 与 Spring
- 第 14 章 画龙点睛:用 Stripes 集成 Spring 和 Hibernate
- 附录 A Hibernate 类型
- 附录 B Criteria API
- 附录 C Hibernate SQL 方言
- 附录 D Spring 事务支持
- 附录 E 参考资源
- 作者简介
- 封面介绍
代码生成
让我们看看如何用 Hibernate Tools 实现原来在第 2 章中创建的 codegen Ant 构建目标完成的功能。为了避免翻书查找例子的麻烦,重新在例 11-1 中列出该构建目标的内容。
例 11-1:重温代码生成的 Ant 构建任务
<!--Generate the java code for all mapping files in our source tree-->
<target name="codegen"depends="usertypes"
description="Generate Java source from the O/R mapping files">
<hibernatetool destdir="${source.root}">
<configuration configurationfile="${source.root}/hibernate.cfg.xml"/>
<hbm2java jdk5="true"/>
</hibernatetool>
</target>
为了在 Eclipse 中重新实现这一功能,我们先从图 11-32 所示的菜单中选择 Open Hibernate Code Generation 对话框。窗口界面如图 11-33 所示,像其他 Eclipse 工具一样,这个对话框也提供了让你选择命名配置的方法。
图 11-33 准备创建一个新的 Hibernate 代码生成配置
看起来为了激活创建新配置的功能,在点击"New"按钮以前需要先点击"Hibernate Code Generation"选项卡。
在激活创建新配置的功能后,就可以点击"New"按钮(这个按钮的图标是一个页面标志,在页面的右上角有个加号)来建立一个配置,以生成我们的数据对象。它会打开一个配置窗口,上面有很多选项,其中的一些选项如图 11-34 所示。
图 11-34 创建一个 Hibernate 代码生成配置
注意:当然,如果你在 Eclipse 工作空间中打开多个项目,在这个浏览对话框中就可以看到更多的选择根节点。
我们将新的配置命名为"Generate Ch 11 Model",选择 Hibernate Console 配置,浏览打开项目的 src 目录(如图 11-35 所示),最终对话框的 Main 选项页界面应该如图 11-36 所示。
图 11-35 指定生成的代码的输出目录
图 11-36 在 Main 选项页中设置代码生成的配置,以实现用 codegen Ant 构建目标完成的功能
我们只需要关注 Name,以及 Main 选项卡上的头两个选项,因为我们并不打算对现有数据做些奇特的反向工程处理(哪天需要将遗留下来的大型数据库模式转换到 Java 模型时,你可以自己再研究一下这个强大功能)。接着,我们再转移到 Exporters(导出)选项卡。点击这个选项卡,将打开如图 11-37 所示的程序界面,填写些信息,以再现原来的 Ant 构建目标的行为。
图 11-37 Exporters 配置,以再现原来的 codegen Ant 构建目标
我们选中了 Use Java 5 syntax 复选框,就相当于在 Ant 构建任务中设置了 jdk5=true 属性;同时也选中 Domain code(.java)导出选项。注意,虽然我们用的不多,还是有很多其他导出生成器可供我们用于创建映射文件、全局的 Hibernate 配置文件甚至是数据库模式的某种 Web 文档。此外,也可以创建某种数据访问对象(DAO 代码),以标准化、方便的方式来简化对模型对象的加载和处理。虽然与这些选项相关的主题已经超出本书的讨论范围,不过你可以自己研究它们的使用方法,至少应该先记下来,以备不时之需。
注意:提供 GUI 的目的是为了解决什么……至少它们涵盖了常见的应用案例。
可能你会问选项卡底部的 Properties 部分是做什么用的。它基本上用于让你设置那些不能用图形界面表示的每个 Exporters(导出器)参数。点击任何一个 Exporters(列表中的名字,而不是复选框),就会显示手工为那个生成器设置的所有属性,同时也激活"Add"和"Remove"按钮,以便可以编辑各个属性。对于有什么属性,以及它们的作用,可以参考生成器的文档。
对于我们当前的任务,就是要重新实现以前用 build.xml 文件实现的功能,这个文件内部的那些配置就是正确的设置。事实上,这些也正是我们真正需要设置的。不过,在这里看一些 Eclipse 特定的选项,也是有价值的。Refresh(刷新)选项卡(如图 11-38 所示)可以让你控制在运行 Experters 以后,Eclipse 应该自动刷新哪些资源。
图中我们选择刷新生成代码所属于的那个项目。似乎这样符合我们正在进行的操作。
图 11-38 代码生成后的刷新选项
最后,Common(通用)选项卡上的默认设置看起来就不错了,不需要修改,点击"Apply"(应用)按钮。
我们刚才的配置将出现在左边的列表中(如图 11-39 所示)。这时我们可以先选中它,再点击"Run"按钮(如图 11-34 的底部右边所示)。或者,如果我们认为可能需要经常运行它的话,可以将它设置为工具条菜单上的一个快捷按钮,这样它就可以出现在菜单的顶部了。从现在起,我们只要从这个对话框中选择相应的配置,再点击"Run"按钮,就可以测试运行了。
图 11-39 我们的代码生成配置现在可以运行了
运行它并不会产生什么特别的结果,只是 Eclipse 窗口底部右边的状态栏会简单地显示正在进行的后台活动(我们保持 Common 选项卡中的 Launch in background 配置选项为选中状态,这正是我们想要的结果)。要看看它是否做了些什么,可以找到生成的类(例如 Album.java)来看看。例 11-2 中的代码演示了由 Hibernate Tools 生成的 Album 类源代码的开始部分。
例 11-2:Eclipse 中的 Hibernate Tools 生成的 Album 类的源代码
package com.oreilly.hh.data;
//Generated Jan 5,2008 6:36:04 PM by Hibernate Tools 3.2.0.CR1
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
*Represents an album in the music database, an organized list of tracks.
*@author Jim Elliott(with help from Hibernate)
*
*/
public class Album implements java.io.Serializable{
private int id;
private String title;
private Integer numDiscs;
private Set<Artist>artists=new HashSet<Artist>(0);
……
源文件中的时间戳和工具版本号都表明这个类是最新生成的(想到我们正在使用的 Maven for the Ant tasks 中提供的 3.2.0.b9 版本,谁知道最新版本进入 Maven 仓库的延迟会有好的一方面呢?)。另一方面,这一结果看起来与 Ant 生成的结果类似。并不太令人振奋,或许我们已经预见到了这些。
那还剩下什么要我们去做?像这样内建到 Eclipse 中的工具可以极大地节省项目的设计和开发周期。能够将查询和数据库模式辅助自动完成、属性浏览以及实时 SQL 显示等集成在一起,这本身就是一种理解数据和模型对象的很好方法。本书前面为测试各种查询而需要编写单独的代码示例,再编译、运行、调整它们,与这种繁琐的方法相比,图形化工具无疑更加快速、更加方便。你可以快速地测试许多查询的变化,而且不需要繁琐的模板代码(无论如何,使用 Hibernate 后,这样的代码已经没有多少了)来建立运行环境。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论