Azure Spring Data は、NoSQL用の Azure Cosmos DB
このガイドでは、Azure Spring Data Azure Cosmos DB SDK の概念、サポートされている機能、トラブルシューティング、既知の問題について説明します。 これらの概念とコード サンプルの詳細については、「Spring Data for Azure Cosmos DB SDK readme」を参照してください。
バージョンのサポート ポリシー
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 Cosmos DBに使用する必要があるAzure Spring Data のバージョン」を参照してください。
概要
パッケージを含めてください
Maven を使用している場合は、以下の依存関係を追加します。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-spring-data-cosmos</artifactId>
<version>LATEST</version>
</dependency>
必須コンポーネント
- Java Development Kit (JDK) バージョン 8 以上。
- アクティブな Azure アカウントアカウントがない場合、Azure 試用版にサインアップして、最大 10 件の無料 Mobile Apps を入手できます。 お持ちでない場合は、 無料アカウントにサインアップしてください。 または、Azure Cosmos DB Emulator を使用して、開発とテストを行うこともできます。 エミュレーターは自己署名 HTTPS 証明書を使用するため、ここで説明するJava信頼された証明書ストアにその証明書をインポートする必要があります。
- (省略可能) ログ記録ファサードの SLF4J。
- (省略可能) SLF4J バインディング を使用して、特定のログ記録フレームワークを SLF4J と関連付けます。
- (省略可能) Maven
SLF4J は、ログ記録を使用する場合にのみ必要です。 また、SLF4J バインディングもダウンロードします。SLF4J API と、選択したログ記録の実装をリンクします。 詳細については、SLF4J のユーザー マニュアルを参照してください。
構成クラスを設定してカスタマイズする
構成クラスを設定するには、 AbstractCosmosConfigurationを拡張します。 詳細については、「構成クラスの設定」を参照してください。
GatewayConnectionConfig、CosmosClientBuilder、またはその両方を指定し、それらを CosmosAsyncClient に渡すことで、Azure Spring Data Azure Cosmos DB SDK で使用される基になる DirectConnectionConfig をカスタマイズできます。 完全なサンプルについては、 カスタマイズ構成セクションを参照してください。
エンティティの設定
単純なエンティティは、Azure Cosmos DBの項目として定義できます。
@Container注釈を追加し、コンテナーに関連するプロパティを指定して、エンティティを定義します。 詳しくは、「エンティティの定義」をご覧ください。
コンテナー注釈では、コンテナー名、 要求ユニット (RU)、有効期間、 自動スケーリング スループットを使用したコンテナーの作成、 入れ子になったパーティション キーのサポート、およびその他のコンテナー プロパティの指定がサポートされています。
リポジトリの設定
Azure Spring Data Azure Cosmos DB では、次の基本的な CRUD 機能を提供する ReactiveCrudRepository (非同期 API) と CrudRepository (同期 API) がサポートされています。
- [保存]
- findAll
- ID による findOne
- すべて削除
- ID による削除
- エンティティの削除
アプリケーションの Spring Data リポジトリを設定するために、CosmosRepository (同期 API のサポート用) または ReactiveCosmosRepository (非同期 API サポート用) を拡張できます。 詳細については、「リポジトリの作成」を参照してください。
Azure Spring Data Azure Cosmos DB では、@Queryを使用してリポジトリ内の注釈付きクエリを指定できます。 詳細については、「QueryAnnotation: リポジトリ内の注釈付きクエリの使用」を参照してください。
スプリングデータの注釈
Spring Data の @Id 注釈
ドメイン クラス内のフィールドを複数の方法で id にマップできます。 詳細については、Spring Data ID の注釈コードのセクションを参照してください。
ID の自動生成
Azure Spring Data Azure Cosmos DB では、@GeneratedValue注釈を使用した ID の自動生成がサポートされます。 詳細については、ID の自動生成に関するセクションを参照してください。
SpEL 式とカスタム コンテナー名
既定では、コンテナー名はユーザー ドメイン クラスのクラス名です。 コンテナー名をカスタマイズするには、 @Container(containerName="myCustomContainerName") 注釈をドメイン クラスに追加します。 詳細については、SpEL 式とカスタム コンテナー名に関するセクションを参照してください。
カスタム インデックスポリシー
既定では、Azure サービスによってIndexingPolicyが設定されます。
IndexingPolicyをカスタマイズするには、ドメイン クラスに@CosmosIndexingPolicy注釈を追加します。 詳細については、インデックス ポリシーに関するセクションを参照してください。
一意のキー ポリシー
Azure Spring Data Azure Cosmos DB では、@CosmosUniqueKeyPolicy注釈をドメイン クラスに追加することで、コンテナーにUniqueKeyPolicyを設定できます。 詳細については、一意のキー ポリシーに関するセクションを参照してください。
Azure Cosmos DB パーティション
ドメイン クラスのフィールドをパーティション キー フィールドとして指定するには、 @PartitionKeyで注釈を付けます。
CRUD 操作を実行するときは、パーティション値を指定します。
詳細については、こちらのテスト セクションを参照してください。
オプティミスティック ロック
Azure-spring-data-cosmos では、特定のコンテナーのオプティミスティック ロックがサポートされています。 このサポートは、別のプロセスによってアイテムが変更された場合、アイテムごとのアップサートと削除が例外で失敗するということです。 詳細については、オプティミスティック ロックに関するセクションを参照してください。
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の使用がサポートされています。
ApplicationContextを介してCosmosClientまたはCosmosAsyncClient 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では、複数のデータベース アカウントや複数のデータベースを持つ単一のアカウントなど、複数のデータベース構成がサポートされています。 完全なコード スニペットについては、マルチデータベース構成に関するセクションを参照してください。
トラブルシューティング
全般
バグが発生した場合は、ここで問題を報告 してください。
新しい機能や変更を提案するには、バグの場合と同じ方法で問題を報告します。
クライアントのログ記録を有効にする
Azure-spring-data-cosmos では、log4j や logback などの一般的なログ記録フレームワークへのログ記録をサポートするロギング ファサードとして SLF4j を使用します。 詳細については、クライアント ログの有効化に関するセクションを参照してください。
例
完全なサンプル プロジェクトについては、サンプル プロジェクトを参照してください。
マルチデータベース アカウント
完全なサンプル プロジェクトについては、 複数のデータベース サンプル プロジェクトを参照してください。
マルチデータベースを使用した単一アカウント
完全なサンプル プロジェクトについては、複数の データベースを含む単一アカウントのサンプル プロジェクトを参照してください。
次のステップ
- Azure Spring Data Azure Cosmos DB の詳細について詳細を読む。
- Azure Cosmos DB サービスの詳細を参照してください。
- Azure Spring Data Azure Cosmos DB サンプルを参照してください。
- Spring MVC と Azure Cosmos DB サンプルを参照してください。
投稿
このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの投稿では、共同作成者使用許諾契約書 (CLA) に同意し、投稿を利用する権利を私たちに実際に付与することを確認する必要があります。
pull request を送信すると、CLA ボットは CLA を提供する必要があるかどうかを自動的に判断し、ラベルやコメントなど、PR を適切に装飾します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。
このプロジェクトは、「Microsoft のオープン ソースの倫理規定」を採用しています。 詳しくは、倫理規定についてよくある質問に関する記事を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。