Azure Cosmos DB 开发指南
Azure Spring Data for Azure Cosmos DB 为 Azure Cosmos DB for NoSQL 提供 Spring Data 支持。 Azure Cosmos DB 是一种全球分布式数据库服务,它允许开发人员使用各种标准 API(如 SQL、MongoDB、Cassandra、Graph 和表)处理数据。
本指南将指导你了解 Azure Spring Data Azure Cosmos DB SDK 的概念、支持的功能、故障排除步骤和已知问题。 有关以下概念和代码示例的详细信息,请参阅适用于 Azure Cosmos DB SDK 的 Spring Data 自述文件。
版本支持策略
Spring Boot 版本支持
此项目支持多个 Spring Boot 版本。 有关详细信息,请参阅 Spring Boot 支持策略。 Maven 用户可从 spring-boot-starter-parent
项目继承来获取依赖项管理部分,使 Spring 能够管理依赖项的版本。 有关详细信息,请参阅 Spring Boot 版本支持。
Spring Data 版本支持
此项目支持不同的 spring-data-commons 版本。 有关详细信息,请参阅 Spring Data 版本支持。
应该使用哪个版本的 Azure Spring Data Azure Cosmos DB
Azure Spring Data Azure Cosmos DB 库支持多个版本的 Spring Boot / Spring Cloud。 有关要与 Spring Boot/Spring Cloud 版本配合使用的 Azure Spring Data 的 Azure Cosmos DB 版本的详细信息,请参阅 我应使用哪个版本的 Azure Spring Data for Azure Cosmos DB?。
开始使用
添加包
如果使用 Maven,请添加以下依赖项。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-spring-data-cosmos</artifactId>
<version>LATEST</version>
</dependency>
先决条件
- Java 开发工具包 (JDK) 版本 8 或更高版本。
- 有效的 Azure 帐户。 如果没有,可以注册 免费帐户。 或者,可使用 Azure Cosmos DB Emulator 进行开发和测试。 由于模拟器 https 证书是自签名的,因此需要将其证书导入 Java 受信任的证书存储,具体说明在此
- (可选)SLF4J 是一个日志记录外观。
- (可选)SLF4J 绑定用于将特定的记录框架与 SLF4J 相关联。
- (可选)Maven
仅当计划使用日志记录时,才需要 SLF4J。另请下载 SLF4J 绑定,该绑定可将 SLF4J API 与你选择的记录实现链接在一起。 有关详细信息,请参阅 SLF4J 用户手册。
设置和自定义配置类
若要设置配置类,需要扩展 AbstractCosmosConfiguration
。 有关详细信息,请参阅安装程序配置类。
可以提供 DirectConnectionConfig
或 GatewayConnectionConfig
或两者,并将其提供给 CosmosClientBuilder
,自定义 Azure Spring Data Azure Cosmos DB SDK 使用的基础 CosmosAsyncClient
。 有关完整示例,请访问自定义配置部分。
实体设置
你可以将简单实体定义为 Azure Cosmos DB 中的项。 可以通过添加 @Container
注释并指定与容器相关的属性来定义实体。 有关详细信息,请参阅定义实体。
容器注释支持指定容器名称、请求单位 (RU)、生存时间、创建具有自动缩放吞吐量的容器、嵌套分区键支持和其他容器属性。
存储库设置
Azure Spring Data Azure Cosmos DB 支持 ReactiveCrudRepository
(异步 API)和 CrudRepository
(同步 API),这些 API 提供以下基本 CRUD 功能:
- 保存
- findAll
- findOne 按 ID
- deleteAll
- 按 ID 删除
- 删除实体
你可以扩展 CosmosRepository
(对于同步 API 支持)或 ReactiveCosmosRepository
(对于异步 API 支持),为应用程序设置 Spring Data 存储库。 有关详细信息,请参阅创建存储库。
Azure Spring Data Azure Cosmos DB 支持使用 @Query
在存储库中指定带注释的查询。 有关详细信息,请参阅 QueryAnnotation:在存储库中使用带注释的查询。
Spring数据注解
Spring Data @Id 注释
可通过多种方式将域类中的字段映射到 id
。 有关详细信息,请参阅 Spring Data ID 注释代码部分。
身份证号自动生成.
Azure Spring Data Azure Cosmos DB 支持使用 @GeneratedValue 注释自动生成 ID。 有关详细信息,请参阅 ID 自动生成部分。
SpEL 表达式和自定义容器名称
默认情况下,容器名称将是用户域类的类名。 若要进行自定义,请将 @Container(containerName="myCustomContainerName")
注释添加到域类。 有关详细信息,请参阅 SpEL 表达式和自定义容器名称部分。
自定义索引策略
默认情况下,IndexingPolicy
将由 Azure 服务设置。 若要进行自定义,请将 @CosmosIndexingPolicy
注释添加到域类。 有关详细信息,请参阅索引策略部分。
唯一键策略
Azure Spring Data Azure Cosmos DB 支持通过向域类添加注释 UniqueKeyPolicy
来在容器上设置 @CosmosUniqueKeyPolicy
。 有关详细信息,请参阅唯一键策略部分。
Azure Cosmos DB 分区
Azure-spring-data-cosmos
支持 Azure Cosmos DB 分区。
若要将域类的字段指定为分区键字段,只需使用 @PartitionKey
对其进行注释。
执行 CRUD 操作时,请指定分区值。
有关详细信息,请参阅此处的测试部分。
乐观锁定
Azure-spring-data-cosmos
支持对特定容器的乐观锁定,这意味着如果项目在此期间被其他进程修改,按项进行的更新插入/删除将失败,并出现异常。 有关详细信息,请参阅乐观锁定部分。
Spring Data 自定义查询、可分页和排序
Azure-spring-data-cosmos
支持 Spring Data 自定义查询,例如一种查找操作 findByAFieldAndBField
。 它还支持 Spring Data 可分页、切片和排序。 有关详细信息,请参阅查询、可分页和排序部分。
通过 Spring Data Cosmos 使用 Azure Cosmos DB Java SDK
Azure-spring-data-cosmos
支持使用 Azure Cosmos DB Java SDK
。 用户可以通过 CosmosClient
获取 CosmosAsyncClient
或 ApplicationContext
bean,并执行 Azure Cosmos DB Java SDK 支持的任何操作。 有关详细信息,请参阅通过 Spring Data Cosmos 部分使用 Azure Cosmos 客户端。
Spring Data REST
Azure-spring-data-cosmos
支持 Spring Data REST。 有关详细信息,请参阅 Azure Spring Data Azure Cosmos DB REST API 部分。
审核
Azure-spring-data-cosmos
支持使用标准 spring-data 注释对数据库实体上的字段进行审核。 有关详细信息,请参阅 Spring Data Azure Cosmos DB 审核部分。
多数据库配置
Azure-spring-data-cosmos
支持多数据库配置,包括“多个数据库帐户”和“具有多个数据库的单个帐户”。 有关完整代码片段,请参阅多数据库配置部分。
故障排除
常规
如果遇到任何 bug,请在此处提交问题。
若要提出新功能建议或可实施的更改建议,可像报告 Bug 一样提交问题。
启用客户端日志记录
Azure-spring-data-cosmos
使用 SLF4j 作为日志记录门面,支持记录到常用的日志记录框架,如 log4j 和 logback。 有关详细信息,请参阅 的“启用客户端日志记录”部分。
示例
有关完整示例项目,请参阅示例项目。
多数据库帐户
有关完整示例项目,请参阅多数据库示例项目。
具有多个数据库的单个帐户
如需完整的示例项目,请参阅 单一账户与多数据库示例项目。
后续步骤
- 详细了解 Azure spring data Azure Cosmos DB。
- 详细了解 Azure Cosmos DB 服务
- 请参阅 Azure Spring Data Azure Cosmos DB 示例
- 请参阅用于 Azure Cosmos DB 的 Spring MVC 示例
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权授予(并且实际上授予)我们使用你的贡献的权利。
提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如“标签”、“注释”)。 按照机器人提供的说明进行操作即可。 在所有存储库中只需使用 CLA 执行一次此操作。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅 行为准则常见问题解答,或对于任何其他问题或意见,请联系 opencode@microsoft.com。