# Jakarta Data

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

[Jakarta Data](https://jakarta.ee/specifications/data/) 是 [Jakarta EE](java-ee.html) 生态系统中的一个规范，专注于数据库操作。 它提供了一个 API，可用于创建仓库：具有插入、更新、删除和查询数据库实体方法的接口。

Jakarta Data 的一个关键特性是无需手动实现仓库方法。 只要使用 [Jakarta Data API](https://jakarta.ee/specifications/data/1.0/apidocs/jakarta.data/module-summary.html) 的注解和关键字，兼容的 [实现库](https://jakarta.ee/specifications/data/1.0/#compatible-implementations) 会提供底层逻辑并将方法声明转为实际数据库调用。

IntelliJ IDEA 为 Jakarta Data 提供以下支持：

* 仓库的编码辅助：根据实体类补全和校验方法名称，并根据方法名称校验形参

* 在 [JPA 控制台](using-jpa-console.html)中执行仓库方法

* 可在 [Beans 工具窗口](beans-tool-window.html) 中进行仓库间导航

* 为 [Jakarta Data Query Language (JDQL)](https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0#_jakarta_data_query_language) 提供辅助：语法高亮显示、基于实体类的语句自动补全以及校验语句

Procedure: 启用 Jakarta EE: Data 插件

> **Note:**
> 未订阅 Ultimate 的情况下，IntelliJ IDEA 中无法使用 Jakarta EE: Data 插件。

此功能性依赖于 [Jakarta EE: Data](https://plugins.jetbrains.com/plugin/25287) 插件，该插件在 IntelliJ IDEA 旗舰版 中默认捆绑并启用。 如果相关功能不可用，请确保您没有禁用插件。

1. 按 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS)) 打开设置，然后选择  `插件` 。

2. 找到  Jakarta EE: Data  插件，然后点击   启用  。

## 将 Jakarta Data 添加到项目中

要在 IntelliJ IDEA 启用 Jakarta Data 支持，需要将其 API 添加到项目依赖项中。 它提供声明仓库及仓库方法所需的注解、接口和关键字。 但要让这些仓库可用，还需要以下依赖项：

* 提供实体注解的 API，例如 [Jakarta Persistence (JPA)](https://jakarta.ee/specifications/persistence/) 或 [Jakarta NoSQL](https://jakarta.ee/specifications/nosql/)。 需要它来定义仓库方法操作的实体类。

* 一个实现库。 它实现仓库方法，管理实体生命周期，并处理与数据库的通信。 它将抽象仓库方法转化为实际数据库操作。 > **Tip:** > 可在 [官方 Jakarta Data 网站](https://jakarta.ee/specifications/data/1.0/#compatible-implementations) 查看所有兼容实现列表。

本指南中，根据数据库是 [关系型](https://en.wikipedia.org/wiki/Relational_database) 还是 [非关系型](https://en.wikipedia.org/wiki/NoSQL)，使用如下依赖组合：

|  数据库类型  |  API  |  实现  |
| --- | --- | --- |
|     关系型     |  Jakarta Data + Jakarta Persistence (JPA)  |  [Hibernate](https://docs.hibernate.org/orm/7.2/repositories/html_single/)  |
|     非关系型     |  Jakarta Data + Jakarta NoSQL  |  [Eclipse JNoSQL](https://www.jnosql.org)  |

Procedure: 创建包含 Jakarta Data 的新 Jakarta EE 项目

1. 打开   新建项目  向导：

* 如果位于主屏幕，请选择 `![加号](https://resources.jetbrains.com.cn/help/img/idea/2026.3/intellij.platform.icons.expui.general.add.svg) 新建 | ![文件夹图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/intellij.platform.icons.expui.nodes.folder.svg) 项目……` 。

* 如果已打开另一个项目，请转到 `文件 | 新建 | 项目` 。

2. 从左侧的   生成器   列表中，选择 ![Jakarta EE 徽标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/intellij.java.ultimate.icons.icons.javaee.newui.jakartaEE.svg)   Jakarta EE  。

![Jakarta EE 项目向导的第一步](https://resources.jetbrains.com.cn/help/img/idea/2026.3/jakarta_new_project_step_1_web.png)

3. 设置 [Jakarta EE 项目设置](new-project-wizard.html#java-ee)。

> **Note:**
> 选择  JDK  时，请注意 Jakarta Data 需要 Java 17 或更高版本。

准备就绪后，点击   下一步  。

4. 从   版本   下拉菜单中选择要使用的 Jakarta EE 版本。

> **Note:**
> 支持 Jakarta Data 的最低版本是   Jakarta EE 11  。

5. 从   依赖项   列表中选择   数据  。 然后根据数据库类型，选择以下项：

* 关系型： 持久化（JPA） 和 Hibernate 。

* 非关系型： NoSQL 。 创建项目后，需要 [手动添加 Eclipse JNoSQL](#add-to-existing-project)。

![使用 JPA 和 Hibernate 的新 Jakarta EE 项目](https://resources.jetbrains.com.cn/help/img/idea/2026.3/java_enterprise_new_project_step_2_jakartadata.png)

6. 点击   创建  。

有关创建 Jakarta EE 项目的更多信息，例如如何设置应用程序服务器，请参阅 [教程：您的第一个 Jakarta EE 应用程序](creating-and-running-your-first-jakarta-ee-application.html)。

Procedure: 将 Jakarta Data 添加到现有项目中

1. 在编辑器中打开构建文件（  `pom.xml`  或  `build.gradle` ，具体取决于项目中使用的 [构建工具](build-tools.html)）。

2. 请根据数据库类型添加以下依赖项：

Maven:

关系型数据库
: ```XML
: <!-- Jakarta Data specification -->
: <dependency>
: <groupId>jakarta.data</groupId>
: <artifactId>jakarta.data-api</artifactId>
: <version>1.0.1</version>
: </dependency>
:
: <!-- Jakarta Persistence specification -->
: <dependency>
: <groupId>jakarta.persistence</groupId>
: <artifactId>jakarta.persistence-api</artifactId>
: <version>3.2.0</version>
: </dependency>
:
: <!-- Implementation (Hibernate) -->
: <dependency>
: <groupId>org.hibernate.orm</groupId>
: <artifactId>hibernate-core</artifactId>
: <version>7.4.5.Final</version>
: </dependency>
:
:
: ```
:
:
:
: Hibernate 可能需要额外依赖项。 请参考 [官方文档](https://docs.hibernate.org/orm/7.4/repositories/html_single/#configuration-integration) 获取指导。

非关系型数据库
: ```XML
:
: <!-- Jakarta Data specification -->
: <dependency>
: <groupId>jakarta.data</groupId>
: <artifactId>jakarta.data-api</artifactId>
: <version>1.0.1</version>
: </dependency>
:
: <!-- Jakarta NoSQL specification -->
: <dependency>
: <groupId>jakarta.nosql</groupId>
: <artifactId>jakarta.nosql-api</artifactId>
: <version>1.0.1</version>
: </dependency>
:
: <!-- Implementation (Eclipse JNoSQL) -->
: <dependency>
: <groupId>org.eclipse.jnosql.mapping</groupId>
: <artifactId>jnosql-mapping-document</artifactId>
: <version>1.1.12</version>
: </dependency>
:
:
: ```
:
:
:
: 不同的 NoSQL 数据库需要不同的 Eclipse JNoSQL 依赖项。 请参考 [官方文档](https://github.com/eclipse-jnosql/jnosql?tab=readme-ov-file#getting-started) 获取指导。

Gradle (Groovy):

关系型数据库
: ```GROOVY
: // Jakarta Data specification
: implementation('jakarta.data:jakarta.data-api:1.0.1')
:
: // Jakarta Persistence specification
: implementation('jakarta.persistence:jakarta.persistence-api:3.2.0')
:
: // Implementation (Hibernate)
: implementation('org.hibernate.orm:hibernate-core:7.4.5.Final')
:
: ```
:
:
:
: Hibernate 可能需要额外依赖项。 请参考 [官方文档](https://docs.hibernate.org/orm/7.4/repositories/html_single/#configuration-integration) 获取指导。

非关系型数据库
: ```GROOVY
: // Jakarta Data specification
: implementation('jakarta.data:jakarta.data-api:1.0.1')
:
: // Jakarta NoSQL specification
: implementation('jakarta.nosql:jakarta.nosql-api:1.0.1')
:
: // Implementation (Eclipse JNoSQL)
: implementation('org.eclipse.jnosql.mapping:jnosql-mapping-document:1.1.12')
:
: ```
:
:
:
: 不同的 NoSQL 数据库需要不同的 Eclipse JNoSQL 依赖项。 请参考 [官方文档](https://github.com/eclipse-jnosql/jnosql?tab=readme-ov-file#getting-started) 获取指导。

Gradle (Kotlin):

关系型数据库
: ```KOTLIN
: // Jakarta Data specification
: implementation("jakarta.data:jakarta.data-api:1.0.1")
:
: // Jakarta Persistence specification
: implementation("jakarta.persistence:jakarta.persistence-api:3.2.0")
:
: // Implementation (Hibernate)
: implementation("org.hibernate.orm:hibernate-core:7.4.5.Final")
:
: ```
:
:
:
: Hibernate 可能需要额外依赖项。 请参考 [官方文档](https://docs.hibernate.org/orm/7.4/repositories/html_single/#configuration-integration) 获取指导。

非关系型数据库
: ```KOTLIN
: // Jakarta Data specification
: implementation("jakarta.data:jakarta.data-api:1.0.1")
:
: // Jakarta NoSQL specification
: implementation("jakarta.nosql:jakarta.nosql-api:1.0.1")
:
: // Implementation (Eclipse JNoSQL)
: implementation("org.eclipse.jnosql.mapping:jnosql-mapping-document:1.1.12")
:
: ```
:
:
:
: 不同的 NoSQL 数据库需要不同的 Eclipse JNoSQL 依赖项。 请参考 [官方文档](https://github.com/eclipse-jnosql/jnosql?tab=readme-ov-file#getting-started) 获取指导。

3. 按 `Ctrl+Shift+O` (Windows), `Ctrl+Shift+O` (macOS), `Ctrl+Shift+O` (IntelliJ IDEA Classic (macOS)), `Ctrl+Shift+O` (macOS System Shortcuts), `Ctrl+Shift+O` (XWin), `Ctrl+Shift+O` (GNOME), `Ctrl+Shift+O` (KDE), `Ctrl+Shift+O` (Emacs), `Ctrl+Shift+O` (Sublime Text), `Ctrl+Shift+O` (Sublime Text (macOS)), `Ctrl+Shift+O` (Visual Studio), `Ctrl+Shift+O` (Visual Studio (macOS)), `Ctrl+Shift+O` (NetBeans), `Ctrl+Shift+O` (Eclipse), `Ctrl+Shift+O` (Eclipse (macOS)) 导入更改。

有关使用构建工具的更多信息，请参阅 [Maven](maven-support.html) 或 [Gradle](gradle.html)。

## 创建 Jakarta Data 仓库

Jakarta Data 仓库是带有  `@Repository`  注解的接口，用于声明实体的数据库操作，如查找、插入、更新或删除。 通常一个仓库管理一个实体类。

Procedure:

1. 打开   项目   工具窗口（ `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS))），转到要创建仓库的软件包。

2. 右键点击该软件包并选择  `新建 | Java 类` 。

3. 在   新建 Java 类   弹窗中，选择   界面  ，为仓库设置名称，然后按   回车键  。

4. 用  `@Repository`  注解接口声明。 如有提示，导入该类。

![已创建带有 Repository 注解及导入的接口](https://resources.jetbrains.com.cn/help/img/idea/2026.3/jakarta_data_repository_created.png)

现在 IntelliJ IDEA 可以将该接口识别为 Jakarta Data 仓库，并提供编码辅助。

5. （可选）扩展 Jakarta Data 的内置仓库之一：

* [DataRepository](https://jakarta.ee/specifications/platform/11/apidocs/jakarta/data/repository/datarepository)：可指定实体类及其 ID 类型，但不提供预定义方法。

* [BasicRepository](https://jakarta.ee/specifications/platform/11/apidocs/jakarta/data/repository/basicrepository)：在 `DataRepository` 基础上，提供查找、保存和删除实体的基本方法。

* [CrudRepository](https://jakarta.ee/specifications/platform/11/apidocs/jakarta/data/repository/crudrepository)：在 `BasicRepository` 基础上，提供用于更新和插入实体的其他方法。

创建仓库后，即可开始声明方法。 请注意，为了让 Jakarta Data 识别方法所代表的数据库操作类型，需要使用其支持的声明模式之一：注解（例如  `@Find` ）或方法名称中的特定前缀（例如  `findByName` ）。 如需了解声明仓库方法的详情，请参阅 [Jakarta Data API 文档](https://jakarta.ee/specifications/data/1.0/apidocs/jakarta.data/module-summary.html)。

## 运行仓库方法

如果项目将 Jakarta Data 与 [Jakarta Persistence](jakarta-persistence-jpa.html) 结合使用，IntelliJ IDEA 可以让您测试仓库方法，而无需启动整个应用程序。 可以改为调用专用操作，将方法转换为数据库查询，并在 [JPA 控制台](using-jpa-console.html)中执行。

> **Note:**
> 此功能不能用于接受实体作为形参的查询。

支持以下方法类型：

* 查询 [从方法名称派生](https://jakarta.ee/specifications/data/1.0/jakarta-data-addendum-1.0)的方法

* 带有 `@Query` 注解且定义显式 JPQL 或 JDQL 查询的方法

* 带有 `@Find` 注解的方法

JPA 控制台   会针对 [数据库](database-tool-window.html)工具窗口中的数据源运行查询。 如果存在多个数据源，IDE 会检查在 [Persistence](persistence-tool-window.html) 工具窗口中分配给持久性单元的是哪一个。 如果 IntelliJ IDEA 无法确定要使用哪个数据源，系统会提示选择一个。

> **Warning:**
> 在   JPA 控制台   中运行查询时，查询会立即执行并提交到数据库。 无法预览更改或将其回滚。 请确保使用能够安全运行查询的数据库。

Procedure: 从装订区域运行 Jakarta Data 查询方法

1. 在编辑器中打开 Jakarta Data 仓库。

2. 在装订区域中，点击查询方法旁边的 ![控制台图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/intellij.database.icons.expui.consoleRun.svg)   在控制台中运行查询  。

3. 如果查询接受形参，   参数   对话框将打开。 指定值，然后点击   执行  。

JPA 控制台   会执行查询并 [显示其结果](using-jpa-console.html#jpa-console-reference)。

![使用装订区域图标在 JPA 控制台中运行 Jakarta Data 仓库方法并填写形参值](https://resources.jetbrains.com.cn/help/img/idea/2026.3/jakarta_data_run_query_in_jpa_console.gif)

## 使用 JDQL 查询

[Jakarta Data Query Language (JDQL)](https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0#_jakarta_data_query_language) 允许为仓库方法编写显式查询，作为按方法名称查询或使用其他注解之外的另一种选择。 在  `@Query`  注解内输入 JDQL 时，IntelliJ IDEA 会自动识别、根据实体类建议字段名称，并校验查询语句。

![在编写 JDQL 查询时自动建议 releaseYear 字段](https://resources.jetbrains.com.cn/help/img/idea/2026.3/jdql_field_suggestion.png)

Procedure: 在专用编辑器中编辑 JDQL 查询

在专用编辑器中打开 JDQL，有助于专注于查询，而不受周围编码影响。 如果查询较复杂或跨多行，这将非常有用。

1. 将文本光标放在 JDQL 查询位置。

2. 按 `Alt+Enter` (Windows), `⌥ ⏎` (macOS), `⌥ ⏎` (IntelliJ IDEA Classic (macOS)), `⌥ ⏎` (macOS System Shortcuts), `Alt+Enter` (XWin), `Alt+Enter` (GNOME), `Alt+Enter` (KDE), `Alt+Enter` (Emacs), `Alt+Enter` (Sublime Text), `⌥ ⏎` (Sublime Text (macOS)), `Alt+Enter` (Visual Studio), `⌥ ⏎` (Visual Studio (macOS)), `Alt+Enter` (NetBeans), `Ctrl+1` (Eclipse), `⌘ 1` (Eclipse (macOS))（或点击 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.codeInsight.intentionBulb.svg)   显示上下文操作​​  ），然后选择   编辑 Jakarta Data QL 片段  。

IntelliJ IDEA 会在专用片段编辑器中打开查询。

![在专用片段编辑器中编辑 JDQL 查询](https://resources.jetbrains.com.cn/help/img/idea/2026.3/jdql_fragment_editor.png)

