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

sev*_*ves 6 spring-roo yeoman yeoman-generator jhipster

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

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

Ind*_*von 5

不,你不能,因为jhipster yeoman发电机"只"根据模板+给定的参数/选择来支撑实体.它不会在此步骤中询问数据库等外部来源.

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

所以,你可以说jhipster使用"实体优先"而不是"表优先"方法.

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

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

  • 我有另一个不同于jhipster预期模型的数据库模型(例如我使用了其他主键和引用)
  • 生成没有存储库或角度内容(这是我使用jhipster的主要原因)
  • 缺少liquibase更改日志[2]
  • 当您尝试针对现有表生成jhipster实体时,这种特殊的重构会在之后导致许多其他更改.与使用jhipster创建新实体相比,这些更改可能更耗时.
  • 这些更改还可能导致功能升级出现问题

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

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

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


Aym*_*med 5

请检查此助手

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

按照该助手的描述“此JHipster模块使在现有数据库上的映射更加容易。”

您也可以使用此工具:

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

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

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