29

我正在专门寻找 JPA 代码生成技术

首先,有哪些项目可以生成符合 JPA 的代码?(例如 HibernateTools)

其次,我还想自定义代码生成实用程序,因为它必须符合我们的公司标准。

如果不是,那么所有可用于使用反射生成 java 代码的框架是什么?所以我可以从头开始写。

注意:我使用 eclipse 生成 JPA 代码并反复重构以使其兼容。

4

10 回答 10

23

我也很难理解这个问题,但我会尝试改写:

  • 您在数据库中有大量数据并希望通过 JPA 访问它
  • 您不想手动编写类来访问不同的数据库/表
  • 目前所有/大部分模型类都是从 Eclipse 中生成的
  • 这些模型具有 JPA 注释
  • 模型类(或注释)不符合公司标准

当您说“JPA java 代码生成”时,我理解从提供的 DB 连接生成 JPA 注释模型类。大多数框架通常将此称为逆向工程。

现在你有两个问题:

  1. 可以推荐哪些代码生成器来生成 JPA 注释类?
  2. 是否可以自定义这些框架的输出,以及以何种方式?

要回答第一个问题:

我真的很喜欢 Netbeans 代码生成,尤其是当您向不熟悉 JPA 的人展示结果时。

在定制级别上,我只能分享我使用 Hibernate Tools 的经验。特别是对于可重现的结果,尽量使用基于 ant 的任务。您可以轻松地将一些目标添加到您的构建中,并且可以在两个级别上完成代码生成:

使用这些模板,您应该能够涵盖大多数公司标准。查看pojohibernate-tools 包的目录。自定义代码生成的最简单方法是复制和调整模板,并将它们放在用于创建 pojo 的 ant 任务中的 hibernate-tools.jar 之前。

正如在另一条评论中已经指出的那样,之后可能很难修改生成的代码。我希望以下提示可以帮助您:

  • 尝试将生成的和自定义的源文件分开放在不同的文件夹中。
  • 考虑使用@MappedSuperclass您可能希望在手动步骤中调整的类。
于 2009-01-29T17:53:15.877 回答
5

JPA 代码生成的另一个有效解决方案是“ Telosys Tools

从现有数据库(“数据库优先”方法)使用可定制模板Eclipse 插件。由于其轻量级模型和 Velocity 模板(在 GitHub 上共享),该解决方案比 Dali 更灵活

见网站:http ://www.telosys.org/

Eclipse Marketplace 上的插件:http ://marketplace.eclipse.org/content/telosys-tools

原理简述:http: //labs.sogeti.com/code-generation-can-it-be-simple-and-pragmatic/

对于JPA 生成,请使用GitHub 上提供的JPA 模板: https ://github.com/telosys-templates-v3

于 2013-08-20T16:00:50.860 回答
3

我使用了Dali Persistence Eclipse Plugin,该工具可通过Indigo Java EE SR1 更新站点下载。

安装插件后,要对您的数据库进行逆向工程,您需要创建一个新的 JPA 项目,设置数据库连接,启动 JPA 运行时的自动下载(在我的情况下为 Eclipse Link),然后开始生成过程。

在代码生成过程中,您需要提供有关表映射和生成的类的详细信息。在生成结束时,代码是干净的。

于 2012-02-08T16:12:45.073 回答
2

Minuteproject是一个生成器工具,可以生成 JPA1/ JPA2以及类似休眠 ORM 的工件。它基于数据库的逆向工程。您可以指示生成器为您的 Java 代码应用不遵循 DB 约定的约定,但映射将是正确的。(示例去除数据库名称前缀;以 ADMIN_ 开头的表,例如 ADMIN_ENVIRONMENT 是作为 java 类的环境(不带管理员))目前有20 多种约定可以帮助您重塑模型以减少数据库外观Java-OO 友好的。

另一个有趣的功能是可更新代码,可以修改生成的代码和您的模型并且下一代您的修改将被保留!生成器进行合并。

这些模板是开源的,并且可以使用速度,附加一个轨道来为您的框架制作特定的轨道是“非常”容易的(例如与您的组织相关的安全方面)。您可以将模板范围限定为字段级别、实体(表或视图)、包(实体组)、模型、提供灵活性的应用程序,并且由于轨道的模板通过元数据相互了解,因此很容易从其他模板中引用模板并通过配置将它们与命名约定相关联。

于 2013-08-29T17:30:53.477 回答
1

Lombok 项目似乎允许您生成基本的命名查询,这是在编译时使用注释和代码生成的另一种方法。

看:

hibernate 论坛上的一个人似乎使用 Hibernate 工具的传统代码生成方法: https ://forum.hibernate.org/viewtopic.php?f=9&t=962223&p=2315766&hilit=named+queries+generate#p2315766

我同意 cletus 的观点,即您无法生成所有命名查询,但我想我们可以想象生成基本的命名查询,例如基于对象的一个​​或多个字段的查找器。

于 2010-01-14T08:58:08.960 回答
0

查看JPM2java,它是 JPA 的代码生成器。唯一的问题是它不会从 SQL 文件或表中生成 JPA 代码,您需要一个 orm.xml 文件。如果您正在寻找直接从表生成代码的工具,您可能想尝试 Netbeans。它具有直接从表生成 JPA 代码的选项

于 2009-07-11T06:58:47.413 回答
0

用于 jpa 代码反向生成的理想工具/eclipse 插件是 Hibernate Tools。这现在已成为 JBoss 工具的一部分。所以,在你的 Eclipse 中,从安装 JBoss Tools 开始。

然后创建一个 JPA 项目。该项目将充当与反向生成项目相关的所有代码/配置的持有者。首先安装 JBoss 工具可以让您的 Hibernate 配置(Hibernate 工具的一部分)与您的 JPA 项目一起创建。

下一步是使用 Hibernate 工具实际反向生成与您的数据库表相对应的 JPA POJO 实体。

要详细了解 JPA POJO 反向生成的步骤,您可以查看以下教程... http://www.javabrahman.com/j2ee/how-to-do-reverse-code-generation-of-hibernatejpa -pojo-entities-using-jboss-tools-eclipse-plugin/

上面的教程还包含创建 JPA 项目以及在 Eclipse 安装中安装 JBoss 工具的教程链接,这两者都是 JPA POJO 实体反向代码生成的先决条件。

于 2014-02-01T15:30:16.970 回答
0

开源图形工具,用于生成 JPA 类、可视化和修改数据库、对现有源代码进行逆向工程以及从现有数据库中导入模型。

对于 NetBeans: http: //jpamodeler.github.io/
对于 Eclipse:https ://www.eclipse.org/webtools/dali/

于 2016-06-15T05:22:38.207 回答
-1

请看一下JOOQ。

http://www.jooq.org/

开源是可用的......

于 2015-04-23T11:13:26.597 回答
-5

好的,基本上你有错误的方式:JPA is the generation tool.

我这样说是因为您唯一可以从中生成 JPA 实体的是 SQL,而 JPA 的全部意义在于以相反的方式做事。您首先定义您的对象模型,然后您可以生成您的表和查询。

例如,我见过一些项目使用 Hibernate 来定义他们的实体,然后他们有一个 ant 构建脚本,可以从 Hibernate 实体模型创建数据库。

JPA 实体定义——尤其是使用注释完成的——并不十分繁琐。它们确实是您最好的选择,而不是成为其他事物的产物。

此外,另一个工具不会帮助您编写命名查询、定义正确的关系级联选项等。如果您已经生成了代码,您将如何处理之后的修改?

这不是正确的方法。

于 2009-01-17T02:08:29.010 回答