对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1Spring中文文档

Spring Data for Apache Cassandra 2.0 在从早期版本升级时引入了一组重大更改:Spring中文文档

弃用

  • 已弃用,取而代之的是 .QueryOptionsBuilder.readTimeout(long, TimeUnit)QueryOptionsBuilder.readTimeout(Duration)Spring中文文档

  • 已弃用,取而代之的是 .CustomConversionsCassandraCustomConversionsSpring中文文档

  • 已弃用,取而代之的是 .BasicCassandraMappingContextCassandraMappingContextSpring中文文档

  • 已弃用,取而代之的是 .o.s.d.c.core.cql.CachedPreparedStatementCreatoro.s.d.c.core.cql.support.CachedPreparedStatementCreatorSpring中文文档

  • 已弃用,取而代之的是 .CqlTemplate.getSession()getSessionFactory()Spring中文文档

  • 已弃用并支持这些方法。CqlIdentifier.cqlId(…)KeyspaceIdentifier.ksId(…).of(…)Spring中文文档

  • 弃用的构造函数,有利于它们的构建器。QueryOptionsSpring中文文档

  • 已弃用,取而代之的是TypedIdCassandraRepositoryCassandraRepositorySpring中文文档

合并的 Spring CQL 和 Spring Data Cassandra 模块

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

<dependencies>

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

</dependencies>

通过合并,我们将所有 CQL 包合并到 Spring Data Cassandra 中:Spring中文文档

[[修订-CQLTEMPLATE/CassandraTemplate]] == 已修订CqlTemplate/CassandraTemplateSpring中文文档

我们以三种方式拆分:CqlTemplateCassandraTemplateSpring中文文档

  • CassandraTemplate不再是实例,而是使用允许重用和精细控制提取大小、一致性级别和重试策略的实例。 您可以通过 . 由于更改,依赖关系注入需要额外的 Bean 设置。CqlTemplateCqlOperationsCassandraTemplate.getCqlOperations()CqlTemplateSpring中文文档

  • CqlTemplate现在反映了基本的 CQL 操作,而不是混合高级和低级 API 调用(例如 vsus),并且简化的方法集与 Spring Frameworks 的方法集保持一致,具有方便的回调接口。count(…)execute(…)JdbcTemplateSpring中文文档

  • 异步方法在 上重新实现,并通过使用 重新实现。 我们删除了各种异步回调侦听器。 是一种灵活的方法,允许过渡到 .AsyncCqlTemplateAsyncCassandraTemplateListenableFutureCancellableListenableFutureCompletableFutureSpring中文文档

删除CassandraOperations.selectBySimpleIds()

该方法已被删除,因为它不支持复杂的 ID。 新引入的查询 DSL 允许单列 ID 的映射和复杂 ID,如以下示例所示:Spring中文文档

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

更好的名字CassandraRepository

我们重命名了Spring Data Cassandra命名,并将其与其他Spring Data模块保持一致:CassandraRepositoryTypedIdCassandraRepositorySpring中文文档

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

Spring Data Cassandra 并已被删除。 请使用 DataStax 驱动程序提供的类型。ConsistencyLevelRetryPolicySpring中文文档

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

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

CQL 规范类型现在尽可能地是值类型(如 、),并且对象是通过静态工厂方法构造的。 这允许简单值对象的不变性。 对必需属性(如表名或键空间名)进行操作的配置器对象(如 )最初是通过静态工厂方法构造的,并允许进一步配置,直到创建所需的状态。FieldSpecificationAlterColumnSpecificationAlterTableSpecificationSpring中文文档

重构为不可变对象QueryOptions

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

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

重构为单列CassandraPersistentProperty

仅当您直接在映射模型上操作时,此更改才会影响您。Spring中文文档

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