|
对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1! |
|
对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1! |
Spring Data for Apache Cassandra 2.0 在从早期版本升级时引入了一组重大更改:
-
将 和 模块合并为一个模块。
spring-cqlspring-data-cassandra -
将专用接口和模板中的异步和同步操作分开。
CqlOperationsCassandraOperations -
修改了 API 以与 .
CqlTemplateJdbcTemplate -
删除了该方法。
CassandraOperations.selectBySimpleIds -
对 使用了更好的名称。
CassandraRepository -
删除了 SD Cassandra 和类型,以支持 DataStax 和类型。
ConsistencyLevelRetryPolicyConsistencyLevelRetryPolicy -
重构了 CQL 规范以值对象和配置器。
-
重构为不可变对象。
QueryOptions -
重构为单列。
CassandraPersistentProperty
弃用
-
已弃用,取而代之的是 .
QueryOptionsBuilder.readTimeout(long, TimeUnit)QueryOptionsBuilder.readTimeout(Duration) -
已弃用,取而代之的是 .
CustomConversionsCassandraCustomConversions -
已弃用,取而代之的是 .
BasicCassandraMappingContextCassandraMappingContext -
已弃用,取而代之的是 .
o.s.d.c.core.cql.CachedPreparedStatementCreatoro.s.d.c.core.cql.support.CachedPreparedStatementCreator -
已弃用,取而代之的是 .
CqlTemplate.getSession()getSessionFactory() -
已弃用并支持这些方法。
CqlIdentifier.cqlId(…)KeyspaceIdentifier.ksId(…).of(…) -
弃用的构造函数,有利于它们的构建器。
QueryOptions -
已弃用,取而代之的是
TypedIdCassandraRepositoryCassandraRepository
合并的 Spring CQL 和 Spring Data Cassandra 模块
Spring CQL 和 Spring Data Cassandra 现在合并到一个模块中。
独立模块不再可用。
您可以找到合并到 中的所有类型。
以下列表显示了如何包含在 maven 依赖项中:spring-cqlspring-data-cassandraspring-data-cassandra
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>4.2.7</version>
</dependency>
</dependencies>
通过合并,我们将所有 CQL 包合并到 Spring Data Cassandra 中:
-
已移入 .
o.s.d.cqlo.s.d.cassandra.core.cql -
合并并展平了 XML 和 Java 子包。
o.s.d.cqlo.s.d.cassandra.config -
已移动并移至 。
CassandraExceptionTranslatorCqlExceptionTranslatoro.s.d.c.core.cql -
将 Cassandra 异常移至 。
o.s.d.c.support.exceptiono.s.d.cassandra -
移至(影响转换器)。
o.s.d.c.converto.s.d.c.core.convert -
移至(影响映射批注)。
o.s.d.c.mappingo.s.d.c.core.mapping -
已从 移动到 。
MapIdo.s.d.c.repositoryo.s.d.c.core.mapping
[[修订-CQLTEMPLATE/CassandraTemplate]]
== 已修订CqlTemplate/CassandraTemplate
我们以三种方式拆分:CqlTemplateCassandraTemplate
-
CassandraTemplate不再是实例,而是使用允许重用和精细控制提取大小、一致性级别和重试策略的实例。 您可以通过 . 由于更改,依赖关系注入需要额外的 Bean 设置。CqlTemplateCqlOperationsCassandraTemplate.getCqlOperations()CqlTemplate -
CqlTemplate现在反映了基本的 CQL 操作,而不是混合高级和低级 API 调用(例如 vsus),并且简化的方法集与 Spring Frameworks 的方法集保持一致,具有方便的回调接口。count(…)execute(…)JdbcTemplate -
异步方法在 上重新实现,并通过使用 重新实现。 我们删除了各种异步回调侦听器。 是一种灵活的方法,允许过渡到 .
AsyncCqlTemplateAsyncCassandraTemplateListenableFutureCancellableListenableFutureCompletableFuture
删除CassandraOperations.selectBySimpleIds()
该方法已被删除,因为它不支持复杂的 ID。 新引入的查询 DSL 允许单列 ID 的映射和复杂 ID,如以下示例所示:
cassandraTemplate.select(Query.query(Criteria.where("id").in(…)), Person.class)
更好的名字CassandraRepository
我们重命名了Spring Data Cassandra命名,并将其与其他Spring Data模块保持一致:CassandraRepositoryTypedIdCassandraRepository
-
重命名为
CassandraRepositoryMapIdCassandraRepository -
重命名为
TypedIdCassandraRepositoryCassandraRepository -
引入 ,扩展为已弃用的类型以简化迁移
TypedIdCassandraRepositoryCassandraRepository
删除了 SD Cassandra 和类型,以支持 DataStax 和类型ConsistencyLevelRetryPolicyConsistencyLevelRetryPolicy
Spring Data Cassandra 并已被删除。
请使用 DataStax 驱动程序提供的类型。ConsistencyLevelRetryPolicy
Spring Data Cassandra 类型限制了 Cassandra 本机驱动程序中提供和允许的可用功能的使用。 因此,每次驱动程序引入更新功能时,Spring Data Cassandra 的类型都需要更新。
重构了 CQL 规范以值对象和配置器
CQL 规范类型现在尽可能地是值类型(如 、),并且对象是通过静态工厂方法构造的。
这允许简单值对象的不变性。
对必需属性(如表名或键空间名)进行操作的配置器对象(如 )最初是通过静态工厂方法构造的,并允许进一步配置,直到创建所需的状态。FieldSpecificationAlterColumnSpecificationAlterTableSpecification
重构为不可变对象QueryOptions
QueryOptions现在是不可变的,可以通过构建器创建。
接受的方法强制执行非 null 对象,这些对象可从静态工厂方法获得。
以下示例演示如何使用:WriteOptionsQueryOptionsempty()QueryOptions.builder()
QueryOptions queryOptions = QueryOptions.builder()
.consistencyLevel(ConsistencyLevel.ANY)
.retryPolicy(FallthroughRetryPolicy.INSTANCE)
.readTimeout(Duration.ofSeconds(10))
.fetchSize(10)
.tracing(true)
.build();
重构为单列CassandraPersistentProperty
仅当您直接在映射模型上操作时,此更改才会影响您。
CassandraPersistentProperty允许绑定以前的多个列名以供复合主键使用。
a 的列现在减少为单列。
解析后的复合主键通过 映射到类。CassandraPersistentPropertyMappingContext.getRequiredPersistentEntity(…)