Cassandra サポート

リファレンスドキュメントのこのパートでは、Apache Cassandra 用の Spring Data が提供するコア機能について説明します。Apache Cassandra 用の Spring Data サポートには、幅広い機能が含まれています。

抽象化

Apache Cassandra の Spring Data では、CQL とエンティティレベルの両方で対話できます。

Spring Data が Apache Cassandra 抽象化に提供する価値は、おそらく、以下の表に概説されている一連のアクションによって最もよく示されます。この表は、Spring が処理するアクションと、アプリケーション開発者の責任となるアクションを示しています。

表 1: Spring Data から Apache Cassandra へ - 誰が何をするのでしょうか ?
アクション Spring あなた

接続パラメーターを定義します。

接続を開きます。

CQL 文を指定します。

パラメーターを宣言し、パラメーター値を提供します

ステートメントを準備して実行します。

ループを設定して、結果を繰り返し処理します(存在する場合)。

反復ごとに作業を行います。

例外を処理します。

セッションを閉じます。

コア CQL サポートは、Cassandra と CQL を開発するのに非常に面倒な API にする可能性がある低レベルの詳細をすべて処理します。マップされたエンティティオブジェクトを使用すると、スキーマの生成、オブジェクトマッピング、およびリポジトリのサポートが可能になります。

Cassandra データベースアクセスのアプローチの選択

Cassandra データベースアクセスのベースとして使用するアプローチはいくつかあります。Spring の Apache Cassandra サポートにはさまざまな種類があります。これらのアプローチのいずれかを使い始めても、別のアプローチの機能を組み合わせて組み込むことができます。次のアプローチはうまく機能します。

  • CqlTemplateReactiveCqlTemplate は典型的な Spring CQL アプローチであり、最も人気があります。これは「最低レベル」のアプローチです。CassandraTemplate などのコンポーネントは内部で CqlTemplate を使用することに注意してください。

  • CassandraTemplate は、CqlTemplate をラップして、CQL ステートメントを作成する代わりに、クエリ結果とオブジェクトのマッピングと SELECTINSERTUPDATEDELETE メソッドの使用を提供します。このアプローチにより、ドキュメントが改善され、使いやすくなります。

  • ReactiveCassandraTemplate は、ReactiveCqlTemplate をラップして、CQL ステートメントを作成する代わりに、クエリ結果とオブジェクトのマッピングと SELECTINSERTUPDATEDELETE メソッドの使用を提供します。このアプローチにより、ドキュメントが改善され、使いやすくなります。

  • リポジトリの抽象化を使用すると、データアクセスレイヤーでリポジトリ宣言を作成できます。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 にマッピングできます。