1.x から 2.x への移行ガイド
Apache Cassandra 2.0 の Spring Data では、以前のバージョンからアップグレードするときに、一連の重大な変更が導入されます。
spring-cqlモジュールとspring-data-cassandraモジュールを 1 つのモジュールに統合しました。CqlOperationsおよびCassandraOperationsの非同期操作と同期操作を専用のインターフェースとテンプレートに分離しました。JdbcTemplateに合わせてCqlTemplateAPI を改訂しました。CassandraOperations.selectBySimpleIdsメソッドを削除しました。CassandraRepositoryに適切な名前を使用しました。SD Cassandra
ConsistencyLevelおよびRetryPolicy型を削除し、DataStaxConsistencyLevelおよびRetryPolicy型を採用しました。CQL 仕様を値オブジェクトとコンフィギュレータにリファクタリングしました。
QueryOptionsを不変オブジェクトにリファクタリングしました。CassandraPersistentPropertyを単一列にリファクタリングしました。
非推奨
QueryOptionsBuilder.readTimeout(long, TimeUnit)を非推奨にし、QueryOptionsBuilder.readTimeout(Duration)を採用しました。CustomConversionsを非推奨にし、CassandraCustomConversionsを採用しました。BasicCassandraMappingContextを非推奨にし、CassandraMappingContextを採用しました。o.s.d.c.core.cql.CachedPreparedStatementCreatorを非推奨にし、o.s.d.c.core.cql.support.CachedPreparedStatementCreatorを採用しました。CqlTemplate.getSession()を非推奨にし、getSessionFactory()を採用しました。CqlIdentifier.cqlId(…)およびKeyspaceIdentifier.ksId(…)は非推奨となり、.of(…)メソッドが優先されます。QueryOptionsのコンストラクターは、そのビルダーを優先して非推奨になりました。TypedIdCassandraRepositoryを非推奨にし、CassandraRepositoryを採用
Spring CQL モジュールと Spring Data Cassandra モジュールの統合
Spring CQL と Spring Data Cassandra が 1 つのモジュールに統合されました。スタンドアロンの spring-cql モジュールは提供されなくなりました。すべての型が spring-data-cassandra にマージされています。次のリストは、spring-data-cassandra を maven 依存関係に含める方法を示しています。
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>4.5.5</version>
</dependency>
</dependencies>マージにより、すべての CQL パッケージが Spring Data Cassandra にマージされました。
o.s.d.cqlをo.s.d.cassandra.core.cqlに移動しました。o.s.d.cqlをo.s.d.cassandra.configとマージし、XML および Java サブパッケージをフラット化しました。CassandraExceptionTranslatorおよびCqlExceptionTranslatorをo.s.d.c.core.cqlに移動しました。Cassandra の例外を
o.s.d.c.support.exceptionからo.s.d.cassandraに移動しました。o.s.d.c.convertをo.s.d.c.core.convertに移動しました (コンバーターに影響します)。o.s.d.c.mappingをo.s.d.c.core.mappingに移動しました (マッピングアノテーションに影響します)。MapIdをo.s.d.c.repositoryからo.s.d.c.core.mappingに移動しました。
[[ 改訂版 -cqltemplate/cassandratemplate]] == 改訂版 CqlTemplate/CassandraTemplate
CqlTemplate と CassandraTemplate を次の 3 つの方法で分割します。
CassandraTemplateはCqlTemplateではなくなりましたが、フェッチサイズ、整合性レベル、再試行ポリシーの再利用と詳細な制御を可能にするインスタンスを使用します。CqlOperationsからCassandraTemplate.getCqlOperations()まで入手できます。この変更により、CqlTemplateの依存関係の注入には追加の Bean セットアップが必要になります。CqlTemplateは、高レベル API 呼び出しと低レベル API 呼び出し (count(…)とexecute(…)など) を混合するのではなく、基本的な CQL 操作を反映するようになり、削減されたメソッドセットは、便利なコールバックインターフェースを備えた Spring フレームワークのJdbcTemplateと連携しています。非同期メソッドは、
ListenableFutureを使用してAsyncCqlTemplateおよびAsyncCassandraTemplateに再実装されます。Cancellableとさまざまな非同期コールバックリスナーを削除しました。ListenableFutureは柔軟なアプローチであり、CompletableFutureへの移行が可能です。
CassandraOperations.selectBySimpleIds() を削除しました
このメソッドは複雑な ID をサポートしていないため、削除されました。新しく導入されたクエリ DSL では、次の例に示すように、単一列 ID に対してマップされた複雑な ID を使用できます。
cassandraTemplate.select(Query.query(Criteria.where("id").in(…)), Person.class)CassandraRepository のより良い名前
Spring Data Cassandra の名前を他の Spring Data モジュールと一致させるために、CassandraRepository と TypedIdCassandraRepository の名前を変更しました。
CassandraRepositoryからMapIdCassandraRepositoryに名前変更されましたTypedIdCassandraRepositoryからCassandraRepositoryに名前変更されましたTypedIdCassandraRepositoryを導入し、移行を容易にするためにCassandraRepositoryを非推奨の型として拡張しました
SD Cassandra ConsistencyLevel および RetryPolicy 型を削除し、DataStax ConsistencyLevel および RetryPolicy 型を採用
Spring Data Cassandra ConsistencyLevel および RetryPolicy は削除されました。DataStax ドライバーによって提供される型を使用してください。
Spring Data Cassandra 型では、Cassandra ネイティブドライバーで提供され許可されている利用可能な機能の使用が制限されていました。その結果、Spring Data Cassandra の型は、ドライバーによって新しい機能が導入されるたびに更新する必要がありました。
CQL 仕様を値オブジェクトとコンフィギュレータにリファクタリング
可能な限り、CQL 仕様型は値型 ( FieldSpecification、AlterColumnSpecification など) になり、オブジェクトは静的ファクトリメソッドによって構築されます。これにより、単純な値オブジェクトの不変性が可能になります。必須プロパティ (テーブル名やキースペース名など) を操作するコンフィギュレーターオブジェクト ( AlterTableSpecification など) は、最初に静的ファクトリメソッドを通じて構築され、目的の状態が作成されるまでさらに構成できます。
QueryOptions を不変オブジェクトにリファクタリングしました
QueryOptions と WriteOptions は不変になり、ビルダーを通じて作成できるようになりました。QueryOptions を受け入れるメソッドは、静的 empty() ファクトリメソッドから利用可能な非 null オブジェクトを強制します。次の例は、QueryOptions.builder() の使用方法を示しています。
QueryOptions queryOptions = QueryOptions.builder()
.consistencyLevel(ConsistencyLevel.ANY)
.retryPolicy(FallthroughRetryPolicy.INSTANCE)
.readTimeout(Duration.ofSeconds(10))
.fetchSize(10)
.tracing(true)
.build();