Hibernate5 中的 "Reverse Engineering" 功能在哪里?

Where is the "Reverse Engineering" feature in Hibernate5?

我正在将一个旧项目从 hibernate3 升级到 hibernate5。该项目依赖于 hbm2java(所谓的逆向工程工具)。在旧项目中,这是用 mvn hibernate3:hbm2java 执行的。

不幸的是,hbm2java 在 Hibernate5 中找不到 - 不在代码中,也不在文档中。

hbm2java 的 Hibernate5 等价物是什么?或者如果它不再受支持,最接近的替代方案是什么?我愿意完全摆脱 Hibernate,如果这是摆脱 Hibernate 3 所需要的。

hibernate-maven-plugin最新版本是4.3.1。

自然地使用 hibernate 4.3.1 就可以摆脱 hibernate 3。

看起来 hbm2java 任务存在于最新的休眠版本的源代码中:https://github.com/hibernate/hibernate-tools/blob/master/main/src/java/org/hibernate/tool/ant/Hbm2JavaExporterTask.java。这就是你要找的,不是吗?因此,也应该可以在本地 Maven 仓库中构建 hibernate5 github 项目,然后在项目 pom.

中绑定依赖项

最后在执行部分添加适当的任务和目标。

建议#1:

你可以使用maven ant runner。它可能会有所帮助。

mvn antrun:run@hbm2java

如果您修改了模板(请参阅文档),那么在 pom.xml 中,将休眠工具标签修改为:

<hibernatetool templatepath="src/the/path/to/the/directory/containing/pojo/directory">

以上路径必须指向名为 pojo 的目录的父目录,其中包含您的模板。

此外,如果您有自定义逆向工程策略 class,请在 pom.xml 中将此属性添加到 jdbcconfiguration 标记。

reversestrategy="fully.qualified.name.CustomDelegatingReverseEngineeringStrategy"

资源 Link: Hibernate tools reverse engineering using Maven

我还没有检查过,但您可以使用 Hibernate 5.X 版本尝试此过程。


建议#2:

这个问题在 Hibernate 5.x 版本中似乎很严重。所有建议是使用 4.3 版本进行逆向工程而不是 5.x

资源 Link:

Step by step tutorial to use 4.3 instead of 5.1 with pictorial view is given here: http://o7planning.org/en/10125/using-hibernate-tools-generate-entity-classes-from-tables

部分问题如下:

  1. 数据库区分大小写问题
  2. 类型映射
  3. table过滤
  4. 未指定 <schema-selection> 标签

这个问题需要手动解决(这只是基本的 XML),或者您可以使用 Hibernate 插件,它提供了专门的编辑器。 http://www.hibernate.org/30.html

对于逆向工程规则,你可以通过这个教程:Chapter 6. Controlling reverse engineering