JPA java代码生成

我特意寻找JPA代码生成技术

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

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

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

注意:我使用eclipse生成JPA代码并重复重构以使其符合规范。

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

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

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

现在你有两个问题:

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

回答第一个问题:

  • Hibernate Tools – 问题中已经提到过,但我更喜欢这个
  • 的EclipseLink
  • Netbeans的

我非常喜欢Netbeans代码生成,特别是如果你向不熟悉JPA的人展示结果。

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

  • 使用属性配置导出器
  • 提供自定义freemarker模板

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

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

  • 尝试将生成和自定义的源文件分隔在不同的文件夹中。
  • 考虑将@MappedSuperclass用于您可能希望在手动步骤中进行调整的类。

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

一个Eclipse插件 ,使用现有数据库(“数据库firts”方法)和可自定义的模板 。 由于其轻量级模型和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

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

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

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

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

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

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

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

看到:

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

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

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

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

然后创建一个JPA项目。 该项目将充当与反向生成项目相关的所有代码/配置的持有者。 首先安装JBoss Tools为您提供了一个优势,即您的Hibernate配置(Hibernate Tools的一部分)与您的JPA项目一起创建。

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

要详细了解JPA POJO反向生成的步骤,您可以查看以下教程… http://www.javabrahman.com/j2ee/how-to-do-reverse-code-generation-of-hibernatejpa -pojo实体-使用- JBoss的工具- Eclipse的插件/

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

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

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

请看看JOOQ。

http://www.jooq.org/

开源可用…..

好吧,基本上你的东西是错误的方式: JPA is the generation tool

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

例如,我已经看到项目使用Hibernate来定义它们的实体,然后它们有一个ant构建脚本,它从Hibernate实体模型创建数据库。

JPA实体定义 – 特别是注释完成 – 并不完全是繁重的。 他们真的是你最好的选择,而不是成为别的产品。

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

这不是正确的方法。