|
此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Data Cassandra 4.4.0! |
从 1.x 到 2.x 的迁移指南
Spring Data for Apache Cassandra 2.0 在从早期版本升级时引入了一组重大更改:
-
合并了
spring-cql和spring-data-cassandramodules 中。 -
中分离的异步和同步作
CqlOperations和CassandraOperations导入到专用界面和模板中。 -
修改了
CqlTemplate要与之保持一致的 APIJdbcTemplate. -
删除了
CassandraOperations.selectBySimpleIds方法。 -
使用更好的名称
CassandraRepository. -
删除了 SD Cassandra
ConsistencyLevel和RetryPolicy支持 DataStax 的类型ConsistencyLevel和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 现在合并到一个模块中。
独立的spring-cql模块不再可用。
您可以找到合并到spring-data-cassandra.
下面的清单显示了如何包括spring-data-cassandra在您的 maven 依赖项中:
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>4.4.1-SNAPSHOT</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以三种方式:
-
CassandraTemplate不再是CqlTemplate而是使用允许重用和精细控制 fetch 大小、一致性级别和重试策略的实例。 您可以获取CqlOperations通过CassandraTemplate.getCqlOperations(). 由于更改,对CqlTemplate需要额外的 bean 设置。 -
CqlTemplate现在反映基本的 CQL作,而不是混合使用高级和低级 API 调用(例如count(…)对execute(…)),并且 reduced 方法集与 Spring Framework 的JdbcTemplate及其方便的回调接口。 -
异步方法在
AsyncCqlTemplate和AsyncCassandraTemplate通过使用ListenableFuture. 我们删除了Cancellable以及各种异步回调侦听器。ListenableFuture是一种灵活的方法,并允许转换为CompletableFuture.
删除CassandraOperations.selectBySimpleIds()
该方法已被删除,因为它不支持复杂 ID。 新引入的查询 DSL 允许对单列 ID 使用映射 ID 和复杂 ID,如下例所示:
cassandraTemplate.select(Query.query(Criteria.where("id").in(…)), Person.class)
更好的名称CassandraRepository
我们将CassandraRepository和TypedIdCassandraRepository要将 Spring Data Cassandra 命名与其他 Spring Data 模块保持一致:
-
重 命名
CassandraRepository自MapIdCassandraRepository -
重 命名
TypedIdCassandraRepository自CassandraRepository -
介绍
TypedIdCassandraRepository扩展CassandraRepository作为已弃用的类型来简化迁移
删除了 SD CassandraConsistencyLevel和RetryPolicy支持 DataStax 的类型ConsistencyLevel和RetryPolicy类型
Spring Data CassandraConsistencyLevel和RetryPolicy已被删除。
请使用 DataStax 驱动程序提供的类型。
Spring Data Cassandra 类型限制了对 Cassandra 本机驱动程序中提供并允许的可用功能的使用。 因此, Spring Data Cassandra 的类型在每次驱动程序引入新功能时都需要更新。
重构了 CQL 规范以值对象和配置器
CQL 规范类型现在尽可能地是值类型(例如FieldSpecification,AlterColumnSpecification),对象由静态工厂方法构造。
这允许简单值对象的不可变性。
Configurator 对象(例如AlterTableSpecification)最初通过静态工厂方法构造,并允许进一步配置,直到创建所需的状态。
重构QueryOptions成为不可变对象
QueryOptions和WriteOptions现在是不可变的,并且可以通过构建器创建。
接受QueryOptions强制使用非 null 对象,这些对象可从 static 获得empty()factory 方法。
以下示例演示如何使用QueryOptions.builder():
QueryOptions queryOptions = QueryOptions.builder()
.consistencyLevel(ConsistencyLevel.ANY)
.retryPolicy(FallthroughRetryPolicy.INSTANCE)
.readTimeout(Duration.ofSeconds(10))
.fetchSize(10)
.tracing(true)
.build();
重构CassandraPersistentProperty到 Single-column
仅当您直接对映射模型进行作时,此更改才会影响 You。
CassandraPersistentProperty允许以前绑定多个列名以供复合主键使用。
的列CassandraPersistentProperty现在缩减为单个列。
解析的复合主键通过MappingContext.getRequiredPersistentEntity(…).