# IntelliJ IDEA Ultimate 功能

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

JPA Buddy 是一个免费的 IntelliJ 插件。 部分功能仅对 IntelliJ IDEA Ultimate 版订阅用户开放。 在本节中，我们将向您介绍 IntelliJ IDEA Ultimate 版中的功能如何帮助开发人员加速开发流程，并从日常的重复性工作中节省大量时间。

## Liquibase

> **Tip:**
> 在 2024.1 之前，对 Liquibase 的支持包括在 JPA Buddy 插件中。 从 2024.1 开始，Liquibase 是捆绑在 IntelliJ IDEA Ultimate 中的插件。

比对 Liquibase 更改日志生成  是一项非常有用的功能，可以节省大量的例行工作时间。 通过使用它，您可以自动生成一个 Liquibase 更改日志，其中包含更新数据库所需的所有代码，以便与您的 JPA 模型保持一致。 可以通过将您的 JPA entities 与数据库、两个数据库进行比较，甚至可以比较来自一个 VCS branch 的 JPA entities 和来自另一个 VCS branch 的 JPA entities 来生成差异日志，当您无权访问目标数据库时，这非常有用。

此外，JPA Buddy 提供了  初始化架构 Liquibase 变更日志  操作，可帮助开发者从头开始生成数据库架构。 可以使用 JPA 实体或现有数据库作为源。 因此，您将获得包含架构初始化所需全部命令的 Liquibase 更改日志。 如果您将 Liquibase 集成到现有应用程序中，或者决定生成一个用于数据库初始化的单一脚本，而不是运行大量旧的更改日志，那么这个功能会非常有帮助。 此外，还可帮助设置新的开发或测试环境。

[Video](https://www.youtube.com/v/26qri-FIwWo)

## Flyway

Flyway versioned migration generation  是一个非常有用的功能，可以节省很多日常工作的时间。 通过使用它，您可以自动生成包含更新数据库所需 DDL 的迁移，以便符合您的 JPA 模型。 通过比较您的 JPA 实体与数据库、两个数据库，甚至是两个 VCS 分支的 JPA 实体，可以生成此类具有差异 DDL 的 Flyway 迁移，这在您无法访问目标数据库时非常有用。

此外，JPA Buddy 提供了  初始化架构 Flyway 迁移  操作，可帮助开发者从头开始生成数据库架构。 可以使用 JPA 实体或现有数据库作为源。 因此，您将得到一个包含架构初始化所需 DDL 的 Flyway 版本迁移。 如果您将 Flyway 集成到现有应用程序中，或决定生成一个单独的脚本进行数据库初始化，而不是运行大量旧的迁移，这个功能将非常有用。 此外，还可帮助设置新的开发或测试环境。

[Video](https://www.youtube.com/v/9wEJ29QIDyM)

## 通过实体生成 DDL

根据实体生成 DDL  操作允许开发者只需点击几下即可将实体转换为 DDL 语句。 它既可以生成用于从头创建数据库架构的初始化脚本，也可以生成差分DDL来将现有数据库更新到与JPA实体一致的有效状态。 此外，此功能对于替代易出错的  `spring.jpa.hibernate.ddl-auto`  属性非常有用。 通过使用 JPA Buddy 操作，您可以在执行前完全控制 DDL，设置合适的 Java <-> DB 类型映射，使用属性转换器和 Hibernate 类型映射字段，生成 DROP 语句等。

[Video](https://www.youtube.com/v/u75s7pIyZqU)

## 逆向工程

如果您倾向于先设计数据库，然后编写 JPA 实体来映射表，或者如果您在已有的数据库上开发应用程序，则此功能将对您极为有用，并节省大量常规工作时间！ 通过使用  Entities from DB action ，您可以在几次点击内将选定的数据库表及其属性转换为 JPA 实体，包括约束、索引、列属性等。 它还支持 ManyToOne、OneToOne、OneToMany 和 ManyToMany 关联的映射。 最好的部分是，它不会重新生成整个实体，而是会将新字段添加到现有的实体声明中。

[Video](https://www.youtube.com/v/Lr_zg_uhWW4)

## DTO Generator

DTO 对于 web 应用至关重要，但它们的实现带来了样板代码。 每个都带有一个映射器的几十个几乎复制您的实体的类。 借助  DTO Generation 功能，您可以节省日常工作中的时间。 使用它，您可以基于 JPA 实体定义创建 DTO 和 MapStruct 映射器。

[Video](https://www.youtube.com/v/qpnM_k-TGFk)

但这还不是全部！ 随着时间的推移，实体可能会发生变化，您需要相应地更改 DTO。 JPA Buddy 也解决了这个问题。 它使您能够  将实体与其 DTO 同步 ，反之亦然。

[Video](https://www.youtube.com/v/ELnfAZVIBZA)

此外，JPA Buddy 提供  Entity from POJO 操作，帮助您从任何 java/kotlin 类生成一个 JPA 实体。 如果您按照 API-first 方法开发应用程序，此功能可能会有所帮助：首先为 API 定义 DTOs，然后再实现数据模型。

[Video](https://www.youtube.com/v/7tRD3u6u_bM)

