共用方式為


Azure Cosmos DB 開發人員指南

適用於 Azure Cosmos DB 的 Azure Spring Data 提供適用於 NoSQLAzure Cosmos DB 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 Version Support

要使用的 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>

必要條件

只有在您打算使用記錄時,才需要 SLF4J,同時下載 SLF4J 系結,這會連結 SLF4J API 與您選擇的記錄實作。 如需詳細資訊,請參閱 SLF4J 使用者手冊

設定和自定義組態類別

若要設定群組態類別,您需要擴充 AbstractCosmosConfiguration。 如需詳細資訊,請參閱 設定組態類別

您可以藉由提供 或 兩者來自定義 Azure Spring Data Azure Cosmos DB SDK 所使用的基礎CosmosAsyncClient,並將其提供給 CosmosClientBuilderGatewayConnectionConfig DirectConnectionConfig 如需完整的範例,請流覽 自定義組態一節

實體設定

您可以將簡單的實體定義為 Azure Cosmos DB 中的專案。 您可以藉由新增 @Container 批注並指定與容器相關的屬性來定義實體。 如需詳細資訊,請參閱 定義實體

容器批注支援指定容器名稱、 要求單位 (RU)、存留時間、 建立具有自動調整輸送量的容器、 巢狀數據分割索引鍵支援,以及其他容器屬性。

存放庫設定

Azure Spring Data Azure Cosmos DB 支援 ReactiveCrudRepository (async API) 和 CrudRepository (sync API),其提供下列基本 CRUD 功能:

  • save
  • findAll
  • findOne by ID
  • deleteAll
  • 依標識碼刪除
  • 刪除實體

您可以擴充 CosmosRepository (針對同步 API 支援) 或 ReactiveCosmosRepository (針對異步 API 支援) 來設定應用程式的 Spring Data 存放庫。 如需詳細資訊,請參閱 建立存放庫

Azure Spring Data Azure Cosmos DB 支援使用 @Query在存放庫中指定批注查詢。 如需詳細資訊,請參閱 QueryAnnotation:在存放庫中使用批注查詢。

Spring 數據批注

Spring Data @Id註釋

有多種方式可將網域類別中的欄位對應至 id。 如需詳細資訊,請參閱 spring 數據識別碼一節

標識碼自動產生

Azure Spring Data Azure Cosmos DB 支援使用 @GeneratedValue 批注自動產生標識符。 如需詳細資訊,請參閱標識碼 自動產生一節

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 支援特定容器的開放式鎖定,這表示專案上的 upserts/deletes 將會失敗,以防專案同時由另一個進程修改時發生例外狀況。 如需詳細資訊,請參閱 開放式鎖定一節

Spring Data 自定義查詢、可分頁和排序

Azure-spring-data-cosmos 支援 Spring Data 自訂查詢,例如尋找作業,例如 findByAFieldAndBField。 它也支援 Spring Data Pageable、Slice 和 Sort。 如需詳細資訊,請參閱 查詢、可分頁和排序一節

透過 Spring Data Cosmos 使用 Azure Cosmos DB Java SDK

Azure-spring-data-cosmos 支援使用 Azure Cosmos DB Java SDK。 用戶可以透過 Azure Cosmos DB Java SDK 取得 CosmosClientCosmosAsyncClient Bean ApplicationContext 並執行任何作業。 如需詳細資訊,請參閱 透過 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 的相同方式提出問題。

啟用客戶端記錄

Azure-spring-data-cosmos 使用 SLF4j 做為記錄外觀,可支援登入 log4j 和 logback 等熱門記錄架構。 如需詳細資訊,請參閱 啟用客戶端記錄一節

範例

如需完整的範例專案,請參閱 範例專案

多資料庫帳戶

如需完整的範例專案,請參閱 多資料庫範例專案

具有多資料庫的單一帳戶

如需完整的範例專案,請參閱 具有多資料庫範例專案的單一帳戶。

下一步

參與

此專案歡迎您參與並提供建議。 大部分的捐款都要求您同意 「參與者許可協定」(CLA) ,宣告您有權,而且實際上確實會授與我們使用您貢獻的許可權。

當您提交提取要求時,CLA-Bot 會自動判斷您是否需要提供 CLA 並適當地裝飾 PR(例如標籤、批註)。 請遵循 bot 提供的指示。 您只需要使用我們的 CLA 在所有存放庫上執行此動作一次。

此專案採用了 Microsoft 開放原始碼管理辦法。 如需詳細資訊,請參閱 《行為規範》常見問題 ,或連絡 opencode@microsoft.com 任何其他問題或意見。

Impressions