このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Data Cassandra 4.4.5 を使用してください! |
1.x から 2.x への移行ガイド
Apache Cassandra 2.0 の Spring Data では、以前のバージョンからアップグレードするときに、一連の重大な変更が導入されます。
spring-cql
モジュールとspring-data-cassandra
モジュールを 1 つのモジュールに統合しました。CqlOperations
およびCassandraOperations
の非同期操作と同期操作を専用のインターフェースとテンプレートに分離しました。JdbcTemplate
に合わせてCqlTemplate
API を改訂しました。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.0-RC1</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();