- 译者序
- 前言
- 本书怎么使用
- 本书排版字体约定
- 本书网站
- 致谢
- 第一部分 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 参考资源
- 作者简介
- 封面介绍
使用 Maven Hibernate3 插件
本章使用的是来自 Mojo 项目中的 Maven Hibernate3 插件( [1] ),Mojo 是 Codehaus 上的一个项目,它为开发 Maven 插件提供一个 Apache Software Foundation(ASF)以外的空间。不像 ASF 那样有很多规则,只要对一些 Maven 插件感兴趣就可以开始为 Mojo 做贡献,这比 ASF 上 Maven 项目中的那些插件的开发要更容易些。将 Mojo 放在 Codehaus 上的另一个原因是,一些 Maven 插件使用的技术的许可协议与 Apache Software License 不兼容。Mojo 的插件可以采用 GPL 协议,而且可以按非 Apache Software License 发布。而在 Apache Software Foundation 中,所有东西的发行都需要采用 Apache Software License。
为了使用 Maven Hibernate3 插件,所有你需要做的就是将例 12-7 演示的 plug-in 元素包括到项目的 pom.xml 文件中。
例 12-7:使用 Maven Hibernate3 插件
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
……pom content skipped……
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.0</version>
</plugin>
</plugins>
</build>
……pom content skipped……
</project>
Hibernate3 插件定义了以下构建目标(也称为配置目的的组件):
hibernate3:hbm2cfgxml
基于现有的数据库模式而生成一个 hibernate.cfg.xml 文件。可以使用这个目标为已有的数据库构建相应的 Hibernate 配置。
hibernate3:hbm2ddl
基于现有的 Hibernate 映射而生成相应的 SQL DDL(数据库定义语言)(使用标注或.hbm.xml 文件)。在我们的例子中,它生成的是一个 HSQLDB 数据库。
hibernate3:hbm2doc
生成一个 HTML 报告,用于描述 Object Model(对象模型)、数据库模式以及如何将二者关联起来。生成的报告的界面风格与 JavaDoc 类似。
hibernate3:hbm2hbmxml
根据现有的数据库模式而生成.hbm.xml 映射文档。如果你有一套数据库表,就可以用这个任务来生成映射文件,再用下一个构建目标来生成 Java 类。
hibernate3:hbm2java
根据 Hibernate 映射而生成 Java 源代码。这个构建目标可以从.hbm.xml 文件生成 Java 代码,或者生成与现有数据库中的数据表对应的 Java 类。
有关 Maven 插件的更多信息,可以参阅 Maven 网站( [2] )的在线文档;有关 Hibernate3 Maven 插件的信息,还可以看看 Mojo 项目( [3] )。
除了 Apache Maven 发布的核心插件以外,人们还需要为 Maven 编写自己的插件,Mojo 这个项目就是为此服务的。如果你有了关于 Maven 插件的好想法,应该考虑参与到 Mojo 项目之中。
配置 Hibernate3 插件
Maven Hibernate3 插件提供了许多配置点。以下列举了其中一些重要的配置选项:
propertyfile
如果在 Hibernate 配置文件中没有指定 JDBC 连接信息,也可以在 database.properties 文件中指定 JDBC 连接参数,默认使用 src/main/resources/database.properties。
configurationfile
Hibernate 配置文件。默认使用 src/main/resources/hibernate.cfg.xml。
jdk5
生成 Java 5 源代码。当生成与 Hibernate 映射匹配的 Java 源代码时,支持使用泛型和枚举类型。默认值是 false。
ejb3
生成带有 ejb3 标注的源代码,默认值是 false。
drop
在执行 hbm2ddl 前,先删除数据库表。默认值是 false。
create
在执行 hbm2ddl 时创建一个数据库。默认值是 true。
outputfilename
为 Hibernate3 插件的构建目标配置输出文件名。
implementation
配置 Hibernate 映射的源文件。有效值可以是 configuration、annotationconfiguration、jpaconfiguration 以及 jdbcconfiguration。
还有其他几个配置参数,如果需要完整的列表,可以查阅 Maven Hibernate3 项目网站上的 Component Properties( [4] )页面。
注意:Hibernate3 插件目前还在由 Mojo 进行开发当中,不要忘记经常查看项目网站上的更新信息。
可以为某个组件(hbm2java 或 hbm2ddl)配置它的每个配置点,也可以为所有组件配置它们的每个配置点。由于例 12-3 并没有提供任何配置属性,所以 Hibernate 会按照默认配置从.hbm.xml 文件中读取 Hibernate 映射。在例 12-4 中,plug-in 配置改写了 hbm2ddl 目标的 implementation 设置,让 Hibernate 从类中的标注来读取映射信息。这一点值得再详细讨论一下。
属性 implementation 有点特殊,它可以设置 Hibernate3 插件获得 Hibernate 映射信息的方式。有 4 种选择:选择 configuration,将在源文件目录中搜索.hbm.xml 映射文件;选择 annotationcon-figuration,将在编译过的类中搜索 Hibernate Annotations;jdbcconfiguration 利用反向工程(reverse engineering),直接从现有的数据库中生成 Hibernate 映射;jpaconfiguration 与 annotationconfiguration 类似,只是它查找的是 persistence.xml,而不是 hibernate.cfg.xml 配置文件。按照构建目标运行的环境,每个目标都有其默认的 implementation 设置。例如,在 JDK 1.4 运行环境下,hbm2ddl 目标的默认值是 configuration;而在 Java SE 5 运行环境下,它的默认值就是 annotationconfiguration。有关所有 Hibernate3 构建目标的 implementation 默认值,可以参阅 Maven Hibernate3 项目网站上的 Component Configuration( [5] )(组件配置)页面。
生成 Hibernate 映射文档
Maven Hibernate3 插件有一个任务是可以为一套 Hibernate 映射创建文档。该文档与 JavaDoc 类似,详细描述了数据库表的结构和相应的 Java 模型对象。为了生成这个文档,需要在运行 install 以后再运行 Hibernate3 插件的 hbm2doc 构建目标:
~/examples/ch12$mvn install
(output omitted)
~/examples/ch12$mvn hibernate:hbm2doc
[INFO]Scanning for projects……
[INFO]Searching repository for plugin with prefix:'hibernate3'.
[INFO]-------------------------------------------------------------------------
---
[INFO]Building Harnessing Hibernate:Chapter Twelve:Maven
[INFO]task-segment:[hibernate3:hbm2doc]
[INFO]-------------------------------------------------------------------------
---
[INFO][hibernate3:hbm2doc]
[INFO]using annotationconfiguration task.
[INFO]Configuration XML file loaded:file:/Users/tobrien/svnw/hibernate-
book/current/examples/ch12/src/main/resources/hibernate.cfg.xml
[INFO]src/main/resources/database.properties not found within the project.
Trying absolute path.
[INFO]No hibernate properties file loaded.
[INFO]------------------------------------------------------------------------
[INFO]BUILD SUCCESSFUL
[INFO]------------------------------------------------------------------------
构建目标 hbm2doc 执行完成以后,将会生成 HTML 文档 target/hibernate3/javadoc/index.html。在浏览器中打开这个页面,就会看到一组描述 Hibernate 映射细节的 HTML 文档。可以从数据库表或实体的视图来浏览 Hibernate 映射。从实体视图(如图 12-5 所示)可以查看是哪个数据库表关联到了某个特定实体对象,而数据库表视图(如图 12-6 所示)则是先点击一个数据库表,再看看是哪个实体对象映射到了这个特定的表。
图 12-5 hbm2doc 生成的 Track 实体文档
图 12-6 hbm2doc 生成的 TRACK 数据库表文档 [1] http://mojo.codehaus.org/maven-hibenate3/hibernate3-maven-plugin/. [2] http://maven.apache.org. [3] http://mojo.codehaus.org. [4] http://mojo.codehaus.org/maven-hibernate3/hibernate3-maven-plugin/componentproperties.html. [5] http://mojo.codehaus.org/maven-hibernate3/hibernate3-maven-plugin/components.html.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论