从 1.x 到 2.x 的迁移指南

Spring Data for Apache Cassandra 2.0 在从早期版本升级时引入了一组重大更改:spring-doc.cadn.net.cn

弃用

合并的 Spring CQL 和 Spring Data Cassandra 模块

Spring CQL 和 Spring Data Cassandra 现在合并到一个模块中。 独立spring-cql模块不再可用。 您可以找到合并到spring-data-cassandra. 以下列表显示了如何包含spring-data-cassandra在您的 Maven 依赖项中:spring-doc.cadn.net.cn

<dependencies>

  <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-cassandra</artifactId>
    <version>4.5.2</version>
  </dependency>

</dependencies>

通过合并,我们将所有 CQL 包合并到 Spring Data Cassandra 中:spring-doc.cadn.net.cn

[[修订版 CQLTEMPLATE/cassandratemplate]] == 修订CqlTemplate/CassandraTemplatespring-doc.cadn.net.cn

我们分开了CqlTemplateCassandraTemplate以三种方式:spring-doc.cadn.net.cn

  • CassandraTemplate不再是CqlTemplate但使用允许重用和精细控制获取大小、一致性级别和重试策略的实例。 您可以获取CqlOperations通过CassandraTemplate.getCqlOperations(). 由于更改,依赖注入CqlTemplate需要额外的 Bean 设置。spring-doc.cadn.net.cn

  • CqlTemplate现在反映基本的 CQL作,而不是混合使用高级和低级 API 调用(例如count(…)execute(…)),并且简化的方法集与 Spring Frameworks 的JdbcTemplate具有方便的回调接口。spring-doc.cadn.net.cn

  • 异步方法在AsyncCqlTemplateAsyncCassandraTemplate通过使用ListenableFuture. 我们删除了Cancellable以及各种异步回调侦听器。ListenableFuture是一种灵活的方法,允许过渡到CompletableFuture.spring-doc.cadn.net.cn

删除CassandraOperations.selectBySimpleIds()

该方法已被删除,因为它不支持复杂 ID。 新引入的查询 DSL 允许对单列 ID 进行映射和复杂 ID,如以下示例所示:spring-doc.cadn.net.cn

cassandraTemplate.select(Query.query(Criteria.where("id").in(…)), Person.class)

更好的名称CassandraRepository

我们重命名CassandraRepositoryTypedIdCassandraRepository要使 Spring Data Cassandra 命名与其他 Spring Data 模块保持一致:spring-doc.cadn.net.cn

删除了 SD CassandraConsistencyLevelRetryPolicy支持 DataStax 的类型ConsistencyLevelRetryPolicy类型

Spring Data CassandraConsistencyLevelRetryPolicy已被删除。 请使用 DataStax 驱动程序提供的类型。spring-doc.cadn.net.cn

Spring Data Cassandra 类型限制了 Cassandra 本机驱动程序中提供和允许的可用功能的使用。 因此,每次驱动程序引入更新的功能时,Spring Data Cassandra 的类型都需要更新。spring-doc.cadn.net.cn

将 CQL 规范重构为值对象和配置器

CQL 规范类型现在尽可能是值类型(例如FieldSpecification,AlterColumnSpecification),对象由静态工厂方法构造。 这允许简单值对象的不变性。 Configurator 对象(例如AlterTableSpecification)最初通过静态工厂方法构造强制性属性(例如表名或键空间名称)并允许进一步配置,直到创建所需的状态。spring-doc.cadn.net.cn

重构QueryOptions成为不可变对象

QueryOptionsWriteOptions现在是不可变的,可以通过构建器创建。 接受的方法QueryOptions强制执行非空对象,这些对象可从 staticempty()工厂方法。 以下示例演示如何使用QueryOptions.builder():spring-doc.cadn.net.cn

QueryOptions queryOptions = QueryOptions.builder()
		.consistencyLevel(ConsistencyLevel.ANY)
		.retryPolicy(FallthroughRetryPolicy.INSTANCE)
		.readTimeout(Duration.ofSeconds(10))
		.fetchSize(10)
		.tracing(true)
		.build();

重构CassandraPersistentProperty到单列

仅当您直接对映射模型进行作时,此更改才会影响您。spring-doc.cadn.net.cn

CassandraPersistentProperty允许以前绑定多个列名以使用复合主键。 的列CassandraPersistentProperty现在缩减为单列。 解析的复合主键通过MappingContext.getRequiredPersistentEntity(…).spring-doc.cadn.net.cn