jhipster生成实体

仅适用于jhipster5.1.0

创建一个实体

请查看有关创建新JHipster应用程序的视频教程!

重要的是,如果您想“实时重载” JavaScript / TypeScript代码,则需要运行yarn start。您可以转到“ 在开发中使用JHipster”页面以获取更多信息。

介绍

创建应用程序后,您将需要创建实体。例如,您可能要创建一个AuthorBook实体。对于每个实体,您将需要:

  • 数据库表
  • Liquibase变更集
  • JPA实体
  • Spring Data JPA存储库
  • Spring MVC REST控制器,具有基本的CRUD操作
  • Angular路由器,组件和服务
  • HTML视图
  • 集成测试,以验证一切正常
  • 性能测试,看一切是否顺利

如果您有多个实体,则可能需要在它们之间建立关系。为此,您将需要:

  • 数据库外键
  • 用于管理这种关系的特定JavaScript和HTML代码

“实体”子生成器将创建所有必要的文件,并为每个实体提供一个CRUD前端(请参阅Angular项目结构和React项目结构)。可以通过运行调用子生成器jhipster entity --[options]。可以通过键入以下内容找到这些选项的参考jhipster entity --help

以下是受支持的选项。

  • --table-name -默认情况下,JHipster将根据您的实体名称生成一个表名,如果您希望使用其他表名,则可以通过传递此选项来实现。
  • --angular-suffix -如果您希望所有Angular路线都具有自定义后缀,则可以使用此选项传递自定义后缀。
  • --regenerate -这将重新生成现有实体,而不会提出任何问题。
  • --skip-server -这将跳过服务器端代码,并且仅生成客户端代码。
  • --skip-client -这将跳过客户端代码,并且仅生成服务器端代码。
  • --db -跳过服务器端生成时指定数据库,否则无效。

JHipster UML和JDL Studio

本页介绍如何使用标准命令行界面通过JHipster创建实体。如果要创建许多实体,则可能更喜欢使用图形工具。

在这种情况下,有两个选项可用:

  • JHipster UML,它允许您使用UML编辑器。
  • JDL Studio,我们的在线工具,使用我们的领域特定语言JDL创建实体和关系。

如果您使用了JDL Studio:

  • 您可以import-jdl通过运行子生成器从JDL文件生成实体jhipster import-jdl your-jdl-file.jh

    • 如果不想重新生成实体,则在导入JDL时,可以使用该--json-only标志跳过实体创建部分,仅在文件.jhipster夹中创建json文件。
    jhipster import-jdl ./my-jdl-file.jdl --json-only
    
    
    • 默认情况下,import-jdl仅重新生成已更改的实体,如果要重新生成所有实体,则传递该--force 标志。请注意,这将覆盖您对实体文件的所有本地更改
    jhipster import-jdl ./my-jdl-file.jdl --force
    
    
  • 如果要使用JHipster UML代替import-jdl子生成器,则需要通过运行进行安装npm install -g jhipster-uml,然后再运行jhipster-uml yourFileName.jh

实体字段

对于每个实体,您可以根据需要添加任意多个字段。您将需要输入字段名称及其类型,JHipster将为您生成所有所需的代码和配置,从Angular HTML视图到Liquibase更改日志。

这些字段不能在您使用的技术中包含保留的关键字。例如,如果您使用MySQL:

  • 您不能使用Java保留关键字(因为您的代码将无法编译)
  • 您不能使用MySQL保留关键字(因为数据库架构更新将失败)

栏位类型

JHipster支持许多字段类型。这种支持取决于您的数据库后端,因此我们使用Java类型来描述它们:Java String将以不同的方式存储在Oracle或Cassandra中,这是JHipster的优势之一,可以为您生成正确的数据库访问代码。

  • String:一个Java字符串。它的默认大小取决于基础后端(如果使用JPA,默认情况下为255),但是您可以使用验证规则进行更改(max例如,大小为1024)。
  • Integer:Java整数。
  • Long:Java长。
  • Float:Java浮点数。
  • Double:Java Double。
  • BigDecimal:一个java.math.BigDecimal对象,当您需要精确的数学计算时使用(通常用于财务操作)。
  • LocalDate:一个java.time.LocalDate对象,用于正确管理Java中的日期。
  • Instant:一个java.time.Instant对象,用于表示时间戳,即时间轴上的瞬时点。
  • ZonedDateTime:一个java.time.ZonedDateTime对象,用于表示给定时区(通常是日历约会)中的本地日期时间。请注意,REST和持久层都不支持时区,因此您应该使用它Instant
  • Boolean:一个Java布尔值。
  • Enumeration:一个Java枚举对象。选择此类型后,子生成器将询问您要在枚举中使用哪些值,并将创建一个特定的enum类来存储它们。
  • Blob:一个Blob对象,用于存储一些二进制数据。选择此类型时,子生成器将询问您是否要存储通用二进制数据,图像对象或CLOB(长文本)。图像将专门在“角度”侧进行处理,因此可以将其显示给最终用户。

验证方式

可以为每个字段设置验证。根据字段类型,将提供不同的验证选项。

验证将在以下日期自动生成:

  • HTML视图,使用Angular或React验证机制
  • Java域对象,使用Bean验证

然后,在以下情况下使用Bean验证时,将使用它们进行自动验证:

  • Spring MVC REST控制器(使用@Valid注释)
  • Hibernate / JPA(实体在保存之前会自动进行验证)

验证信息还将用于生成更精确的数据库列元数据:

  • 必填字段将被标记为不可为空
  • 唯一字段将创建唯一约束
  • 具有最大长度的字段将具有相同的列长

验证有一些限制:

  • 我们不支持Angular,React和Bean Validation的所有验证选项,因为我们仅支持客户端和服务器API通用的选项
  • 正则表达式模式在JavaScript和Java中的工作方式不同,因此,如果配置一个,则可能需要调整其中一种生成的模式
  • JHipster会在不知道您的验证规则的情况下生成适用于通用实体的单元测试:生成的测试可能未通过验证规则。在这种情况下,您将需要更新单元测试中使用的样本值,以使它们通过验证规则。

实体关系

实体关系仅适用于SQL数据库。这是一个相当复杂的主题,它具有自己的文档页面:管理关系。

为您的业务逻辑生成单独的服务类

与单独使用Spring REST Controller相比,拥有一个单独的服务类可以拥有更复杂的逻辑。拥有服务层(具有或不具有接口)将使您能够使用DTO(请参阅下一节)。

这与使用Spring service子生成器的逻辑相同,因此我们建议阅读其文档以获取更多信息。

数据传输对象(DTO)

默认情况下,JHipster实体不使用DTO,但如果您选择具有服务层,则可以将它们作为选项使用(请参见上一节)。这里是文档:使用DTO。

筛选

(可选)可以使用JPA过滤存储在SQL数据库中的实体。这里是文档:过滤实体。

分页

请注意,如果使用Cassandra创建应用程序,则分页不可用。当然,它将在将来的版本中添加。

分页使用链接头,作为在GitHub的API。JHipster在服务器端(Spring MVC REST)和客户端端(Angular / React)都提供了该规范的定制实现。

生成实体时,JHipster提供4个分页选项:

  • 没有分页(在这种情况下,后端将不分页)
  • 基于Bootstrap寻呼机的简单寻呼机
  • 基于Bootstrap分页组件的完整分页系统
  • 基于无限滚动指令的无限滚动系统

更新现有实体

实体配置保存在目录中的特定.json文件中.jhipster。因此,如果使用现有实体名称再次运行子生成器,则可以更新或重新生成实体。

当您为现有实体运行实体子生成器时,系统将询问您“是否要更新实体?这将替换该实体的现有文件,所有自定义代码都将被以下选项覆盖:

  • Yes, re generate the entity-这将重新生成您的实体。提示:这可以通过--regenerate在运行子发电机时传递一个标志来强制执行
  • Yes, add more fields and relationships -这将给您一些问题,以添加更多字段和关系
  • Yes, remove fields and relationships -这将向您提出问题,以从实体中删除现有字段和关系
  • No, exit -这将存在子发电机而无需更改任何内容

您可能由于以下原因而要更新您的实体:

  • 您想要向现有实体添加/删除字段和关系
  • 您想将实体代码重置为原始状态
  • 您已经更新了JHipster,并希望使用新模板生成您的实体
  • 您已经修改了.json配置文件(格式与生成器提出的问题非常接近,因此不是很复杂),因此您可以拥有一个新版本的实体
  • 您已经复制/粘贴了.json文件,并且想要一个与复制的实体非常接近的新实体

提示:要立即重新生成所有实体,可以使用以下命令(删除--force时会在文件更改时询问您的问题)。

  • Linux和Mac: for f inls .jhipster; do jhipster entity ${f%.*} --force ; done
  • 视窗: for %f in (.jhipster/*) do jhipster entity %~nf --force

讲解

这是一个简短的教程,介绍如何创建具有一对多关系的两个实体(作者和书)。

重要的是,如果要“实时重载” JavaScript / TypeScript代码,则需要运行yarn start。您可以转到“ 在开发中使用JHipster”页面以获取更多信息。

生成“作者”实体

因为我们希望在作者和书籍之间建立一对多的关系(一个作者可以写很多本书),所以我们需要首先创建作者。然后,在数据库级别,JHipster将能够在Book表上添加外键,从而链接到Author表。

jhipster entity author

回答有关该实体领域的下一个问题,作者有:

  • 类型为“字符串”的“名称”
  • 类型为“ LocalDate”的“ birthDate”

然后回答有关关系的问题,作者有:

  • 与“ book”实体的一对多关系(尚不存在)

生成“ Book”实体

jhipster entity book

回答有关该实体领域的下一个问题,这本书有:

  • 类型为“字符串”的“标题”
  • 类型为“字符串”的“说明”
  • 类型为“ LocalDate”的“ publicationDate”
  • “ BigDecimal”类型的“价格”

然后回答有关人际关系的问题,这本书:

  • 与“作者”实体具有多对一关系
  • 并且此关系使用“名称”字段(来自Author实体)进行显示

检查生成的代码

使用来运行生成的测试套件,mvn test它将测试Author实体和Book实体。

启动应用程序(例如,使用mvn),登录并在“实体”菜单中选择“作者”和“书”实体。

检查数据库表,以查看是否正确插入了数据。

改进生成的代码

生成的文件包含所有基本的CRUD操作,如果您的需求很简单,则无需修改。

如果要修改生成的代码或数据库架构,则应遵循我们的开发指南

如果您想要一些更复杂的业务行为,则可能需要@Service使用service子生成器添加一个Spring 类。

你完成了!

你可能感兴趣的:(jhipster生成实体)