返回介绍

代码生成

发布于 2025-04-21 21:42:15 字数 4521 浏览 0 评论 0 收藏

让我们看看如何用 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 后,这样的代码已经没有多少了)来建立运行环境。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。