此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Data Cassandra 4.4.0spring-doc.cn

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

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

  • 将 和 模块合并为一个模块。spring-cqlspring-data-cassandraspring-doc.cn

  • 将异步和同步操作分离到专用接口和模板中。CqlOperationsCassandraOperationsspring-doc.cn

  • 修改了 API 以使其与 保持一致。CqlTemplateJdbcTemplatespring-doc.cn

  • 已删除该方法。CassandraOperations.selectBySimpleIdsspring-doc.cn

  • 使用了更好的名称。CassandraRepositoryspring-doc.cn

  • 删除了 SD Cassandra 和类型,以支持 DataStax 和类型。ConsistencyLevelRetryPolicyConsistencyLevelRetryPolicyspring-doc.cn

  • 重构了 CQL 规范以评估对象和配置器。spring-doc.cn

  • 重构为不可变对象。QueryOptionsspring-doc.cn

  • 重构为单列。CassandraPersistentPropertyspring-doc.cn

弃用

  • 已弃用,取而代之的是 .QueryOptionsBuilder.readTimeout(long, TimeUnit)QueryOptionsBuilder.readTimeout(Duration)spring-doc.cn

  • 已弃用,取而代之的是 .CustomConversionsCassandraCustomConversionsspring-doc.cn

  • 已弃用,取而代之的是 .BasicCassandraMappingContextCassandraMappingContextspring-doc.cn

  • 已弃用,取而代之的是 .o.s.d.c.core.cql.CachedPreparedStatementCreatoro.s.d.c.core.cql.support.CachedPreparedStatementCreatorspring-doc.cn

  • 已弃用,取而代之的是 .CqlTemplate.getSession()getSessionFactory()spring-doc.cn

  • 已弃用并支持这些方法。CqlIdentifier.cqlId(…)KeyspaceIdentifier.ksId(…).of(…)spring-doc.cn

  • 弃用的构造函数 ,以支持其构建器。QueryOptionsspring-doc.cn

  • 已弃用,取而代之的是TypedIdCassandraRepositoryCassandraRepositoryspring-doc.cn

合并的 Spring CQL 和 Spring Data Cassandra 模块

Spring CQL 和 Spring Data Cassandra 现在合并到一个模块中。 独立模块不再可用。 您可以找到合并到 中的所有类型。 下面的清单显示了如何包含在你的 maven 依赖项中:spring-cqlspring-data-cassandraspring-data-cassandraspring-doc.cn

<dependencies>

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

</dependencies>

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

  • 已移至 。o.s.d.cqlo.s.d.cassandra.core.cqlspring-doc.cn

  • 合并并扁平化了 XML 和 Java 子包。o.s.d.cqlo.s.d.cassandra.configspring-doc.cn

  • 已移动 和 到 .CassandraExceptionTranslatorCqlExceptionTranslatoro.s.d.c.core.cqlspring-doc.cn

  • 已将 Cassandra 异常移动到 。o.s.d.c.support.exceptiono.s.d.cassandraspring-doc.cn

  • 移至 (影响转换器)。o.s.d.c.converto.s.d.c.core.convertspring-doc.cn

  • 移至 (影响映射注释)。o.s.d.c.mappingo.s.d.c.core.mappingspring-doc.cn

  • 已从 移动到 。MapIdo.s.d.c.repositoryo.s.d.c.core.mappingspring-doc.cn

[[修订的 cqltemplate/cassandratemplate]] == 已修订CqlTemplate/CassandraTemplatespring-doc.cn

我们以三种方式进行拆分:CqlTemplateCassandraTemplatespring-doc.cn

  • CassandraTemplate不再是 A,而是使用允许重用和精细控制 fetch 大小、一致性级别和重试策略的实例。 您可以通过 获取 。 由于此更改,依赖项注入需要额外的 bean 设置。CqlTemplateCqlOperationsCassandraTemplate.getCqlOperations()CqlTemplatespring-doc.cn

  • CqlTemplate现在反映基本的 CQL 操作,而不是混合高级和低级 API 调用(例如 vs),并且减少的方法集与 Spring 框架及其方便的回调接口保持一致。count(…)execute(…)JdbcTemplatespring-doc.cn

  • 异步方法是在 上和使用 . 我们删除了各种异步回调侦听器。 是一种灵活的方法,并允许转换为 .AsyncCqlTemplateAsyncCassandraTemplateListenableFutureCancellableListenableFutureCompletableFuturespring-doc.cn

删除CassandraOperations.selectBySimpleIds()

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

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

更好的名称CassandraRepository

我们重命名了 Spring Data Cassandra 命名,并将其与其他 Spring Data 模块保持一致:CassandraRepositoryTypedIdCassandraRepositoryspring-doc.cn

  • 已重命名为CassandraRepositoryMapIdCassandraRepositoryspring-doc.cn

  • 已重命名为TypedIdCassandraRepositoryCassandraRepositoryspring-doc.cn

  • 引入,扩展为已弃用的类型以简化迁移TypedIdCassandraRepositoryCassandraRepositoryspring-doc.cn

删除了 SD Cassandra 和类型,以支持 DataStax 和类型ConsistencyLevelRetryPolicyConsistencyLevelRetryPolicy

Spring Data Cassandra 的 ,已被删除。 请使用 DataStax 驱动程序提供的类型。ConsistencyLevelRetryPolicyspring-doc.cn

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

重构了 CQL 规范以值对象和配置器

CQL 规范类型现在尽可能多地是值类型(例如 , ),并且对象由静态工厂方法构造。 这允许简单值对象的不可变性。 对强制属性(例如 table name 或 keyspace name)进行操作的 Configurator 对象(例如 )最初是通过静态工厂方法构建的,并允许进一步配置,直到创建所需的状态。FieldSpecificationAlterColumnSpecificationAlterTableSpecificationspring-doc.cn

重构为 Immutable ObjectsQueryOptions

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

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

重构为单列CassandraPersistentProperty

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

CassandraPersistentProperty允许以前绑定多个列名以供复合主键使用。 a 的列现在减少为单个列。 解析的复合主键通过 映射到类。CassandraPersistentPropertyMappingContext.getRequiredPersistentEntity(…)spring-doc.cn