最新の安定バージョンについては、Spring Data Cassandra 4.4.5 を使用してください! |
Cassandra サポート
リファレンスドキュメントのこのパートでは、Apache Cassandra 用の Spring Data が提供するコア機能について説明します。Apache Cassandra 用の Spring Data サポートには、幅広い機能が含まれています。
Java ベースの
@Configuration
クラスまたは XML 名前空間による Spring 構成のサポート。一般的な Cassandra データアクセス操作を適切に処理することで生産性を向上させる
CqlTemplate
、AsyncCqlTemplate
、ReactiveCqlTemplate
ヘルパークラス。CQL テーブルと POJO 間のオブジェクトマッピングを提供する
CassandraTemplate
、AsyncCassandraTemplate
、ReactiveCassandraTemplate
ヘルパークラス。例外変換を Spring のポータブルデータアクセス例外階層に変換します。
Spring の 変換サービスと統合された機能豊富なオブジェクトマッピング。
他のメタデータ形式をサポートするために拡張可能なアノテーションベースのマッピングメタデータ。
Java ベースの DSL のクエリ、条件、更新。
カスタムクエリメソッドのサポートを含む、命令型およびリアクティブ
Repository
インターフェースの自動実装。
抽象化
Apache Cassandra の Spring Data では、CQL とエンティティレベルの両方で対話できます。
Spring Data が Apache Cassandra 抽象化に提供する価値は、おそらく、以下の表に概説されている一連のアクションによって最もよく示されます。この表は、Spring が処理するアクションと、アプリケーション開発者の責任となるアクションを示しています。
アクション | Spring | あなた |
---|---|---|
接続パラメーターを定義します。 | ○ | |
接続を開きます。 | ○ | |
CQL 文を指定します。 | ○ | |
パラメーターを宣言し、パラメーター値を提供します | ○ | |
ステートメントを準備して実行します。 | ○ | |
ループを設定して、結果を繰り返し処理します(存在する場合)。 | ○ | |
反復ごとに作業を行います。 | ○ | |
例外を処理します。 | ○ | |
セッションを閉じます。 | ○ |
コア CQL サポートは、Cassandra と CQL を開発するのに非常に面倒な API にする可能性がある低レベルの詳細をすべて処理します。マップされたエンティティオブジェクトを使用すると、スキーマの生成、オブジェクトマッピング、およびリポジトリのサポートが可能になります。
Cassandra データベースアクセスのアプローチの選択
Cassandra データベースアクセスのベースとして使用するアプローチはいくつかあります。Spring の Apache Cassandra サポートにはさまざまな種類があります。これらのアプローチのいずれかを使い始めても、別のアプローチの機能を組み合わせて組み込むことができます。次のアプローチはうまく機能します。
CqlTemplate
とReactiveCqlTemplate
は典型的な Spring CQL アプローチであり、最も人気があります。これは「最低レベル」のアプローチです。CassandraTemplate
などのコンポーネントは内部でCqlTemplate
を使用することに注意してください。CassandraTemplate
は、CqlTemplate
をラップして、CQL ステートメントを作成する代わりに、クエリ結果とオブジェクトのマッピングとSELECT
、INSERT
、UPDATE
、DELETE
メソッドの使用を提供します。このアプローチにより、ドキュメントが改善され、使いやすくなります。ReactiveCassandraTemplate
は、ReactiveCqlTemplate
をラップして、CQL ステートメントを作成する代わりに、クエリ結果とオブジェクトのマッピングとSELECT
、INSERT
、UPDATE
、DELETE
メソッドの使用を提供します。このアプローチにより、ドキュメントが改善され、使いやすくなります。リポジトリの抽象化を使用すると、データアクセスレイヤーでリポジトリ宣言を作成できます。Spring Data のリポジトリ抽象化のゴールは、さまざまな永続ストアのデータアクセスレイヤーを実装するために必要な定型コードの量を大幅に削減することです。
ほとんどのデータ指向タスクでは、豊富なオブジェクトマッピング機能を使用する [Reactive|Async]CassandraTemplate
または Repository
サポートを使用できます。[Reactive|Async]CqlTemplate
は、カウンターを増分したり、アドホック CRUD 操作を実行したりするためによく使用されます。[Reactive|Async]CqlTemplate
は、Cassandra と直接通信できる com.datastax.oss.driver.api.core.CqlSession
などの低レベル API オブジェクトを簡単に取得できるコールバックメソッドも提供します。Apache Cassandra の Spring Data は、さまざまな API のオブジェクトに対して、DataStax Java ドライバーのオブジェクトと同じ命名規則を使用しているため、使い慣れており、既存の知識を Spring API にマッピングできます。