是否可以从 JHipster 中的现有数据库模型生成实体?

Is it possible to generate entities from an existing database model in JHipster?

有没有办法从现有的数据库模型生成实体,或者我是否必须自己使用 yeoman (yo) 创建所有实体?

我从 Spring Roo 项目听说过这种技术。

不,你不能,因为 jhipster yeoman 生成器 "only" 根据模板 + 给定的 parameters/choices 搭建实体脚手架。在此步骤中它不会询问数据库等外部资源。

生成器为 jpa、angular 和 liquibase 变更日志创建所有文件。最后,liquibase 在启动期间使用变更日志创建 tables,如果它们尚不存在的话。

因此,您可以说 jhipster 使用 "entity first" 而不是 "table first" 方法。

虽然这将是一个不错的功能,但我认为它不会集成到 jhipster 中,因为现有的数据库是如此不同,以至于很难处理每一种可能性。有不同的主键选择、不同的数据类型、不同的多对多关系或概括的实现等等。 或者您可以在 Github 上请求新功能,也许它会被实现...

但是,给一些指示: 我也有同样的情况,我试图将一个现有的数据库迁移到 jhipster(这是 jhipster 1.6 左右),大约有 50 tables 和大量数据,我还想到了 "database refactoring" [ 1].然而,我的 "solution" 是使用 jhipster 创建一个新数据库,然后使用一些 sql 语句将数据从旧数据库迁移到新数据库。 主要原因:

  • 我有另一个与 jhipster 预期模型不同的数据库模型(例如,我使用了其他主键和引用)
  • 没有生成存储库和 angular 东西(这是我使用 jhipster 的主要原因)
  • 缺少 liquibase 更新日志 [2]
  • 当您尝试针对现有的 table 生成 jhipster 实体时,这种特殊的重构会导致很多额外的变化。这些更改可能比使用 jhipster 创建新实体更耗时。
  • 这些更改也可能导致功能升级出现问题

是的,roo 拥有这种逆向工程或重构数据库的技术 (http://docs.spring.io/spring-roo/reference/html/base-dbre.html)。 AFAIK,它只创建基于 JPA 的符合 roo 的实体。因此,它也不同于 jhipster 使用的 spring 数据 JPA(与 [1] 等其他 jpa-refectoring 工具一样的问题)

[1] 我之前在另一个基于 dropwizard 的项目中使用了一个可以从现有数据库创建 jpa 实体 类 的 eclipse JPA 插件。但是,我没有尝试将它与 Spring/Jhipster.

结合使用

[2] 可以从现有数据库创建 liquibase 变更日志:http://www.liquibase.org/documentation/generating_changelogs.html

Spring Roo 包含 DBRE 插件,它是一个很棒的数据库逆向工程工具,可以自动生成您的域实体。

@eplog 你错了,DBRE 允许你使用 --repository 选项为每个实体创建 Spring Data JPA 存储库。看看http://docs.spring.io/spring-roo/docs/1.3.1.RELEASE/reference/html/base-dbre.html#d4e1765

恕我直言,DBRE 为您提供的好处是:

  • 您无需搜索、测试和学习第 3 方工具,Roo 会为您完成。
  • 逆向工程是一种强大的工具,可用于在无法迁移数据库的环境中迁移遗留应用程序

希望对您有所帮助。和 Roo 一起享受吧!

请检查这个助手

https://www.npmjs.com/package/generator-jhipster-db-helper

根据这个助手的描述"This JHipster module makes mapping on an existing database easier."

你也可以使用这个工具:

https://github.com/Blackdread/sql-to-jdl

这会将您的 sql 文件转换为 idl 文件,然后您可以使用 jHipster import-idl 功能导入数据库。

这将帮助您加快使用现有数据库生成时髦应用程序的过程

是的,你可以!

查看这个堆栈溢出答案:

How to modify existing entity generated with jhipster?

并且,查看此视频,了解使用带有 JBoss 工具的 Eclipse 从现有模式自动生成 JPA 注释域对象。

创建 Hibernate 配置文件后,您可以打开 "Code Generation Tools",在 "Exporters" 选项卡上,确保 select 复选框 "Use Java 5 syntax",和 "EJB3" 注释。

https://www.youtube.com/watch?v=KO_IdJbSJkI

此外,请确保您的休眠 jar(s) 与您的配置编号相同,在我的情况下,我正在执行 Hibernate Spatial,并且版本与 Hibernate-Core 不匹配,并且一分钟都无法工作。

在之前答案中建议的两个选项中

第二个选项以直接的方式工作。以下是步骤和预编译站点:

  • 安装java和maven(可以用sdkman)
  • 克隆存储库
  • 修改 ./src/main/resources/application.yml 以专门针对您的数据库配置:spring -> 数据源 -> 用户名,spring -> 数据源 -> 密码和应用程​​序 -> 数据库到-出口
  • 运行 'mvn'

如果要生成具有特定文件名的 jdl,请根据需要修改应用程序 -> 导出 -> 路径。