对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1! |
对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1! |
Spring Data for Apache Cassandra 2.0 在从早期版本升级时引入了一组重大更改:
-
将 和 模块合并为一个模块。
spring-cql
spring-data-cassandra
-
将专用接口和模板中的异步和同步操作分开。
CqlOperations
CassandraOperations
-
修改了 API 以与 .
CqlTemplate
JdbcTemplate
-
删除了该方法。
CassandraOperations.selectBySimpleIds
-
对 使用了更好的名称。
CassandraRepository
-
删除了 SD Cassandra 和类型,以支持 DataStax 和类型。
ConsistencyLevel
RetryPolicy
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 现在合并到一个模块中。
独立模块不再可用。
您可以找到合并到 中的所有类型。
以下列表显示了如何包含在 maven 依赖项中:spring-cql
spring-data-cassandra
spring-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.cql
o.s.d.cassandra.core.cql
-
合并并展平了 XML 和 Java 子包。
o.s.d.cql
o.s.d.cassandra.config
-
已移动并移至 。
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
不再是实例,而是使用允许重用和精细控制提取大小、一致性级别和重试策略的实例。 您可以通过 . 由于更改,依赖关系注入需要额外的 Bean 设置。CqlTemplate
CqlOperations
CassandraTemplate.getCqlOperations()
CqlTemplate
-
CqlTemplate
现在反映了基本的 CQL 操作,而不是混合高级和低级 API 调用(例如 vsus),并且简化的方法集与 Spring Frameworks 的方法集保持一致,具有方便的回调接口。count(…)
execute(…)
JdbcTemplate
-
异步方法在 上重新实现,并通过使用 重新实现。 我们删除了各种异步回调侦听器。 是一种灵活的方法,允许过渡到 .
AsyncCqlTemplate
AsyncCassandraTemplate
ListenableFuture
Cancellable
ListenableFuture
CompletableFuture
删除CassandraOperations.selectBySimpleIds()
该方法已被删除,因为它不支持复杂的 ID。 新引入的查询 DSL 允许单列 ID 的映射和复杂 ID,如以下示例所示:
cassandraTemplate.select(Query.query(Criteria.where("id").in(…)), Person.class)
更好的名字CassandraRepository
我们重命名了Spring Data Cassandra命名,并将其与其他Spring Data模块保持一致:CassandraRepository
TypedIdCassandraRepository
-
重命名为
CassandraRepository
MapIdCassandraRepository
-
重命名为
TypedIdCassandraRepository
CassandraRepository
-
引入 ,扩展为已弃用的类型以简化迁移
TypedIdCassandraRepository
CassandraRepository
删除了 SD Cassandra 和类型,以支持 DataStax 和类型ConsistencyLevel
RetryPolicy
ConsistencyLevel
RetryPolicy
Spring Data Cassandra 并已被删除。
请使用 DataStax 驱动程序提供的类型。ConsistencyLevel
RetryPolicy
Spring Data Cassandra 类型限制了 Cassandra 本机驱动程序中提供和允许的可用功能的使用。 因此,每次驱动程序引入更新功能时,Spring Data Cassandra 的类型都需要更新。
重构了 CQL 规范以值对象和配置器
CQL 规范类型现在尽可能地是值类型(如 、),并且对象是通过静态工厂方法构造的。
这允许简单值对象的不变性。
对必需属性(如表名或键空间名)进行操作的配置器对象(如 )最初是通过静态工厂方法构造的,并允许进一步配置,直到创建所需的状态。FieldSpecification
AlterColumnSpecification
AlterTableSpecification
重构为不可变对象QueryOptions
QueryOptions
现在是不可变的,可以通过构建器创建。
接受的方法强制执行非 null 对象,这些对象可从静态工厂方法获得。
以下示例演示如何使用:WriteOptions
QueryOptions
empty()
QueryOptions.builder()
QueryOptions queryOptions = QueryOptions.builder()
.consistencyLevel(ConsistencyLevel.ANY)
.retryPolicy(FallthroughRetryPolicy.INSTANCE)
.readTimeout(Duration.ofSeconds(10))
.fetchSize(10)
.tracing(true)
.build();
重构为单列CassandraPersistentProperty
仅当您直接在映射模型上操作时,此更改才会影响您。
CassandraPersistentProperty
允许绑定以前的多个列名以供复合主键使用。
a 的列现在减少为单列。
解析后的复合主键通过 映射到类。CassandraPersistentProperty
MappingContext.getRequiredPersistentEntity(…)