Apache Cassandra 的 Spring Data(数据)附录(四)

Apache Cassandra 的 Spring Data(数据)附录(四)

附录 A:命名空间引用

元素​​<repositories />​

该元素触发了 Spring 数据存储库基础结构的设置。最重要的属性是,它定义了要扫描 Spring 数据存储库接口的包。请参阅“​​XML 配置​​”。下表描述了元素的属性:​​<repositories />​​​​base-package​​​​<repositories />​

表 11.属性

名字

描述

​base-package​

定义要扫描的包,以查找在自动检测模式下扩展的存储库接口(实际接口由特定的 Spring 数据模块确定)。还会扫描已配置软件包下的所有软件包。允许使用通配符。​​*Repository​

​repository-impl-postfix​

定义用于自动检测自定义存储库实现的后缀。名称以配置的后缀结尾的类被视为候选类。默认为。​​Impl​

​query-lookup-strategy​

确定用于创建查找器查询的策略。有关详细信息,请参阅“​​查询查找策略​​​”。默认为。​​create-if-not-found​

​named-queries-location​

定义搜索包含外部定义查询的属性文件的位置。

​consider-nested-repositories​

是否应考虑嵌套存储库接口定义。默认为。​​false​

附录 B:填充器命名空间参考

<填充器 /> 元素

该元素允许通过 Spring 数据存储库基础架构填充数据存储。[​​1​]​<populator />​

表 12.属性

名字

描述

​locations​

应填充从存储库中查找要读取对象的文件的位置。

附录 C:存储库查询关键字

支持的查询方法主题关键字

下表列出了 Spring 数据存储库查询派生机制通常支持的主题关键字,以表达谓词。 有关支持的关键字的确切列表,请参阅特定于商店的文档,因为此处列出的某些关键字可能在特定商店中不受支持。

表 13.查询主题关键字

关键词

描述

​find…By​​​, , , , , ​​read…By​​​​get…By​​​​query…By​​​​search…By​​​​stream…By​

常规查询方法通常返回存储库类型、主子类型或结果包装器(如),或任何其他特定于存储的结果包装器。可以用作,或与其他关键字结合使用。​​Collection​​​​Streamable​​​​Page​​​​GeoResults​​​​findBy…​​​​findMyDomainTypeBy…​

​exists…By​

存在投影,返回通常为结果。​​boolean​

​count…By​

计数投影返回数值结果。

​delete…By​​​, ​​remove…By​

删除查询方法不返回任何结果 () 或删除计数。​​void​

​…First<number>…​​​, ​​…Top<number>…​

将查询结果限制为第一个结果。此关键字可以出现在主题(和其他关键字)之间的任何位置。​​<number>​​​​find​​​​by​

​…Distinct…​

使用非重复查询仅返回唯一结果。请参阅特定于商店的文档是否支持该功能。此关键字可以出现在主题(和其他关键字)之间的任何位置。​​find​​​​by​

支持的查询方法谓词关键字和修饰符

下表列出了 Spring 数据存储库查询派生机制通常支持的谓词关键字。 但是,请参阅特定于商店的文档,了解支持的关键字的确切列表,因为此处列出的某些关键字可能在特定商店中不受支持。

表 14.查询谓词关键字

逻辑关键字

关键字表达式

​AND​

​And​

​OR​

​Or​

​AFTER​

​After​​​, ​​IsAfter​

​BEFORE​

​Before​​​, ​​IsBefore​

​CONTAINING​

​Containing​​​, , ​​IsContaining​​​​Contains​

​BETWEEN​

​Between​​​, ​​IsBetween​

​ENDING_WITH​

​EndingWith​​​, , ​​IsEndingWith​​​​EndsWith​

​EXISTS​

​Exists​

​FALSE​

​False​​​, ​​IsFalse​

​GREATER_THAN​

​GreaterThan​​​, ​​IsGreaterThan​

​GREATER_THAN_EQUALS​

​GreaterThanEqual​​​, ​​IsGreaterThanEqual​

​IN​

​In​​​, ​​IsIn​

​IS​

​Is​​​,,(或无关键字)​​Equals​

​IS_EMPTY​

​IsEmpty​​​, ​​Empty​

​IS_NOT_EMPTY​

​IsNotEmpty​​​, ​​NotEmpty​

​IS_NOT_NULL​

​NotNull​​​, ​​IsNotNull​

​IS_NULL​

​Null​​​, ​​IsNull​

​LESS_THAN​

​LessThan​​​, ​​IsLessThan​

​LESS_THAN_EQUAL​

​LessThanEqual​​​, ​​IsLessThanEqual​

​LIKE​

​Like​​​, ​​IsLike​

​NEAR​

​Near​​​, ​​IsNear​

​NOT​

​Not​​​, ​​IsNot​

​NOT_IN​

​NotIn​​​, ​​IsNotIn​

​NOT_LIKE​

​NotLike​​​, ​​IsNotLike​

​REGEX​

​Regex​​​, , ​​MatchesRegex​​​​Matches​

​STARTING_WITH​

​StartingWith​​​, , ​​IsStartingWith​​​​StartsWith​

​TRUE​

​True​​​, ​​IsTrue​

​WITHIN​

​Within​​​, ​​IsWithin​

除了筛选器谓词之外,还支持以下修饰符列表:

表 15.查询谓词修饰符关键字

关键词

描述

​IgnoreCase​​​, ​​IgnoringCase​

与谓词关键字一起使用,用于不区分大小写的比较。

​AllIgnoreCase​​​, ​​AllIgnoringCase​

忽略所有合适属性的大小写。在查询方法谓词中的某处使用。

​OrderBy…​

指定静态排序顺序,后跟属性路径和方向(例如)。​​OrderByFirstnameAscLastnameDesc​

附录 D:存储库查询返回类型

支持的查询返回类型

下表列出了 Spring 数据存储库通常支持的返回类型。 但是,请参阅特定于商店的文档以获取支持的返回类型的确切列表,因为此处列出的某些类型可能在特定商店中不受支持。

地理空间类型(如、和)仅适用于支持地理空间查询的数据存储。 某些存储模块可能会定义自己的结果包装器类型。​​GeoResult​​​​GeoResults​​​​GeoPage​

表 16.查询返回类型

返回类型

描述

​void​

表示无返回值。

Java 原语。

包装器类型

Java 包装器类型。

​T​

一个独特的实体。期望查询方法最多返回一个结果。如果未找到结果,则返回。多个结果触发 an.​​null​​​​IncorrectResultSizeDataAccessException​

​Iterator<T>​

一。​​Iterator​

​Collection<T>​

一个。​​Collection​

​List<T>​

一个。​​List​

​Optional<T>​

爪哇8或番石榴。期望查询方法最多返回一个结果。如果未找到结果,则返回 oris 。多个结果触发 an.​​Optional​​​​Optional.empty()​​​​Optional.absent()​​​​IncorrectResultSizeDataAccessException​

​Option<T>​

要么是斯卡拉,要么是vavrtype。在语义上与前面描述的Java 8的行为相同。​​Option​​​​Optional​

​Stream<T>​

A Java 8 .​​Stream​

​Streamable<T>​

该直接的便利扩展公开了流式传输,映射和过滤结果,连接它们等的方法。​​Iterable​

实现和采用构造函数或工厂方法参数的类型​​Streamable​​​​Streamable​

公开采用 aas 参数的构造函数或/工厂方法的类型。有关详细信息,请参阅返回自定义可流式传输包装器类型​。​​….of(…)​​​​….valueOf(…)​​​​Streamable​

瓦夫尔,,,​​Seq​​​​List​​​​Map​​​​Set​

Vavr 集合类型。有关详细信息,请参阅​​对 Vavr 集合的支持​​。

​Future<T>​

A. 期望对方法进行注释,并且需要启用 Spring 的异步方法执行功能。​​Future​​​​@Async​

​CompletableFuture<T>​

A Java 8.期望对方法进行注释,并且需要启用 Spring 的异步方法执行功能。​​CompletableFuture​​​​@Async​

​Slice<T>​

一个大小的数据块,指示是否有更多可用数据。需要方法参数。​​Pageable​

​Page<T>​

A 包含其他信息,例如结果总数。需要方法参数。​​Slice​​​​Pageable​

​GeoResult<T>​

包含附加信息(如到参考位置的距离)的结果条目。

​GeoResults<T>​

包含附加信息的列表,例如到参考位置的平均距离。​​GeoResult<T>​

​GeoPage<T>​

Awith,例如到参考位置的平均距离。​​Page​​​​GeoResult<T>​

​Mono<T>​

使用反应式存储库发射零个或一个元素的项目反应器。期望查询方法最多返回一个结果。如果未找到结果,则返回。多个结果触发 an.​​Mono​​​​Mono.empty()​​​​IncorrectResultSizeDataAccessException​

​Flux<T>​

使用反应式存储库发射零个、一个或多个元素的项目反应器。返回的查询还可以发出无限数量的元素。​​Flux​​​​Flux​

​Single<T>​

一个 RxJava使用反应式存储库发出单个元素。期望查询方法最多返回一个结果。如果未找到结果,则返回。多个结果触发 an.​​Single​​​​Mono.empty()​​​​IncorrectResultSizeDataAccessException​

​Maybe<T>​

使用反应式存储库的 RxJavaemitting 零个或一个元素。期望查询方法最多返回一个结果。如果未找到结果,则返回。多个结果触发 an.​​Maybe​​​​Mono.empty()​​​​IncorrectResultSizeDataAccessException​

​Flowable<T>​

使用反应式存储库的 RxJavaemitting 零个、一个或多个元素。返回的查询还可以发出无限数量的元素。​​Flowable​​​​Flowable​

附录 E:迁移指南

从 Spring Data Cassandra 1.x 到 2.x 的迁移指南

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

  • 将模块合并为单个模块。spring-cqlspring-data-cassandra
  • 将异步和同步操作分离到专用接口和模板中。CqlOperationsCassandraOperations
  • 修改了 API 以保持一致。CqlTemplateJdbcTemplate
  • 删除了该方法。CassandraOperations.selectBySimpleIds
  • 用了更好的名字。CassandraRepository
  • 删除了SD Cassandraandtypes,转而使用DataStaxandtypes。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-cql​​​​spring-data-cassandra​​​​spring-data-cassandra​

<dependencies>

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>4.0.0</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
  • 移动了卡桑德拉例外。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​

  • ​CassandraTemplate​​不再 abut 使用允许重用和精细控制提取大小、一致性级别和重试策略的实例。 你可以获得通过。 由于更改,依赖注入需要额外的 Bean 设置。CqlTemplateCqlOperationsCassandraTemplate.getCqlOperations()CqlTemplate
  • ​CqlTemplate​​现在反映了基本的CQL操作,而不是混合高级和低级API调用(例如asversus),并且简化的方法集与Spring Frameworks的便捷回调接口保持一致。count(…)execute(…)JdbcTemplate
  • 异步方法由 onand 重新实现。 我们删除了各种异步回调 listeners.is 一种灵活的方法,并允许过渡到一个。AsyncCqlTemplateAsyncCassandraTemplateListenableFutureCancellableListenableFutureCompletableFuture

删除​​CassandraOperations.selectBySimpleIds()​

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

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

更好的名称​​CassandraRepository​

我们重命名了 Spring,以使 Spring Data Cassandra 命名与其他 Spring Data 模块保持一致:​​CassandraRepository​​​​TypedIdCassandraRepository​

  • 重命名为CassandraRepositoryMapIdCassandraRepository
  • 重命名为TypedIdCassandraRepositoryCassandraRepository
  • 引入,扩展为已弃用的类型以简化迁移TypedIdCassandraRepositoryCassandraRepository

删除了SD Cassandraandtypes,转而使用DataStaxandtypes​​ConsistencyLevel​​​​RetryPolicy​​​​ConsistencyLevel​​​​RetryPolicy​

Spring Data Cassandraand已被移除。 请使用 DataStax 驱动程序提供的类型。​​ConsistencyLevel​​​​RetryPolicy​

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

重构 CQL 规范以评估对象和配置器

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

重构为不可变对象​​QueryOptions​

​QueryOptions​​并且现在是不可变的,可以通过构建器创建。 接受强制非空对象的方法,这些对象可从 staticfactory 方法获得。 以下示例演示如何使用:​​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​​允许绑定以前的多个列名以供复合主键使用。 aare 列现在减少到单个列。 解析的复合主键映射到类 通过。​​CassandraPersistentProperty​​​​MappingContext.getRequiredPersistentEntity(…)​

从 Spring Data Cassandra 2.x 到 3.x 的迁移指南

Spring Data for Apache Cassandra 3.0 在从早期版本升级时引入了一组重大更改。

查看依赖项

升级到 Spring Data Cassandra 需要升级到 DataStax 驱动程序版本 4。升级到新驱动程序会带来传递依赖项更改,最值得注意的是,Google Guava由驱动程序捆绑和着色。 查看DataStax Java Driver for Apache Cassandra 4 Upgrade Guide,了解有关驱动程序相关更改的详细信息。

适应配置

DataStax Java Driver 4 将沙对象合并为单个对象,因此删除了所有相关的 API。 通过删除大多数移入的配置项(主要是基于文件的)对配置进行了大部分修订。 这意味着,现在通过其他方式配置了更多选项。​​Cluster​​​​Session​​​​CqlSession​​​​Cluster​​​​DriverConfigLoader​​​​SocketOptions​​​​AddressTranslator​

如果使用基于 XML 的配置,请确保将所有配置文件从命名空间 () 迁移到命名空间 ()。​​cql​​​​http://www.springframework.org/schema/cql https://www.springframework.org/schema/cql/spring-cql.xsd​​​​cassandra​​​​http://www.springframework.org/schema/data/cassandra https://www.springframework.org/schema/data/cassandra/spring-cassandra.xsd​

为了反映配置构建器的变化,被重命名为现在接受而不是。 请确保在配置中还提供本地数据中心,因为正确配置负载平衡需要它。​​ClusterBuilderConfigurer​​​​SessionBuilderConfigurer​​​​CqlSessionBuilder​​​​Cluster.Builder​

连接

() 和 () 的配置元素合并为一个 single() 元素,该元素同时配置密钥空间和端点。​​Cluster​​​​cassandra:cluster​​​​Session​​​​cassandra:session​​​​CqlSession​​​​cassandra:session​

通过升级,架构支持被移动到一个新的命名空间元素:提供 abean。​​cassandra:session-factory​​​​SessionFactory​

例 117.版本 2 中的群集、会话和架构配置:

<cassandra:cluster contact-points="localhost" port="9042">
<cassandra:keyspace action="CREATE_DROP" name="mykeyspace" />
</cassandra:cluster>

<cassandra:session keyspace-name="mykeyspace" schema-action="CREATE">
<cassandra:startup-cql>CREATE TABLE …</cassandra:startup-cql>
</cassandra:session>

例 118.版本 3 中的会话和架构配置:

<cassandra:session contact-points="localhost" port="9042" keyspace="mykeyspace" local-datacenter="datacenter1">
<cassandra:keyspace action="CREATE_DROP" name="mykeyspace" />
</cassandra:session>

<cassandra:session-factory schema-action="CREATE">
<cassandra:script location="classpath:/schema.cql"/>
</cassandra:session-factory>

Spring Data Cassandra 3.0 在使用 XML 命名空间配置时不再注册默认的映射上下文、上下文和模板 API bean。 默认值应应用于应用程序或 Spring 引导级别。

模板接口

Apache Cassandra 的 Spring Data 将驱动程序升级带来的大部分更改封装为模板 API 和存储库支持,如果您的应用程序主要与映射实体或原始 Java 类型交互。

我们通常建议使用 createandobjects,因为工厂用法允许同步架构创建,并在使用多个数据库时引入一定程度的灵活性。​​CqlTemplate​​​​CassandraTemplate​​​​SessionFactory​

例 119.版本 2 中的模板 API 配置:

<cql:template session-ref="…" />

<cassandra:template session-ref="…" cassandra-converter-ref="…"/>

例 120。版本 3 中的模板 API 配置:

<cassandra:session-factory />

<cassandra:cql-template session-factory-ref="…" />

<cassandra:template session-factory-ref="…" cassandra-converter-ref="…"/>

您必须在所有直接使用 DataStax 驱动程序 API 的地方调整您的代码。 典型案例包括:

  • 的实现ResultSetExtractor
  • 的实现RowCallbackHandler
  • 的实现RowMapper
  • 包括异步和反应式变体的实现PreparedStatementCreator
  • 调用CqlTemplate.queryForResultSet(…)
  • 调用接受的方法Statement
的变化​​AsyncCqlTemplate​

DataStax 驱动程序 4 更改了异步运行的查询的结果类型。 若要反映这些更改,需要调整提供以下功能的代码:

  • 的实现AsyncSessionCallback
  • 的实现AsyncPreparedStatementCreator

结果集提取需要一个新的接口来用于 DataStax'.now,在以前使用过的地方使用。 请注意,它返回的是 a而不是标量对象,因此代码迁移可以在提取器中使用完全非阻塞的代码。​​AsyncResultSet​​​​AsyncCqlTemplate​​​​AsyncResultSetExtractor​​​​ResultSetExtractor​​​​AsyncResultSetExtractor.extractData(…)​​​​Future​

数据模型迁移

如果您使用以下功能,则数据模型可能需要更新:

  • ​@CassandraType​
  • ​forceQuote​​在,,,和@Table@Column@PrimaryKeyColumn@PrimaryKey@UserDefinedType
  • 属性使用java.lang.Date
  • 属性使用或UDTValueTupleValue
​@CassandraType​

DataStax 驱动程序 4 不再附带枚举来描述 Cassandra 类型。 我们决定重新引入枚举。 确保更新导入以使用新引入的替换类型。​​Name​​​​CassandraType.Name​

强制报价

此标志现已弃用,我们建议不要再使用它。 Apache Cassandra 的 Spring Data 在内部使用驱动程序,确保在需要的地方引用。​​CqlIdentifier​

物业类型

DataStax 驱动程序 4 不再使用。 请升级要使用的数据模型。 也请将原始 UDT 和元组类型迁移到新的驱动程序类型。​​java.lang.Date​​​​java.time.LocalDateTime​​​​UdtValue​​​​TupleValue​

其他更改

  • 驱动程序的常量类被删除并重新引入,因为适应了。ConsistencyLevelDefaultConsistencyLevel@ConsistencyDefaultConsistencyLevel
  • ​RetryPolicy​​Onandtypes被移除,没有替换。QueryOptions…CqlTemplate
  • 驱动程序的类型已删除。 现在使用分页状态。PagingStateByteBuffer
  • ​SimpleUserTypeResolver​​接受代替。CqlSessionCluster
  • ​SimpleTupleTypeFactory​​已迁移 to.no 更长的时间需要 a/context。enumSimpleTupleTypeFactory.INSTANCEClusterCqlSession
  • 介绍 在功能上构建语句,因为 QueryBuilder API 使用不可变的语句类型。StatementBuilder
  • ​Session​​Bean 更名为 FromtoandBean 更名为 Fromto。sessioncassandraSessionSessionFactorysessionFactorycassandraSessionFactory
  • ​ReactiveSession​​Bean 更名为 FromtoandBean 更名为 Fromto。reactiveSessionreactiveCassandraSessionReactiveSessionFactoryreactiveSessionFactoryreactiveCassandraSessionFactory
  • ​ReactiveSessionFactory.getSession()​​现在返回 a。 以前它只返回。Mono<ReactiveSession>ReactiveSession
  • 数据类型解析已移入,因此所有相关方法均已移入/移入(受影响的方法是,,,和)。ColumnTypeResolverDataTypeCassandraPersistentEntityCassandraPersistentPropertyColumnTypeResolverMappingContext.getDataType(…)CassandraPersistentProperty.getDataType()CassandraPersistentEntity.getUserType()CassandraPersistentEntity.getTupleType()
  • 架构创建已从 (受影响的方法是、和)。MappingContextSchemaFactoryCassandraMappingContext.getCreateTableSpecificationFor(…)CassandraMappingContext.getCreateIndexSpecificationsFor(…)CassandraMappingContext.getCreateUserTypeSpecificationFor(…)

弃用

  • ​CassandraCqlSessionFactoryBean​​,而是使用。CqlSessionFactoryBean
  • ​KeyspaceIdentifier​​并且,使用代替。CqlIdentifiercom.datastax.oss.driver.api.core.CqlIdentifier
  • ​CassandraSessionFactoryBean​​,而是使用。CqlSessionFactoryBean
  • ​AbstractCqlTemplateConfiguration​​,而是使用。AbstractSessionConfiguration
  • ​AbstractSessionConfiguration.getClusterName()​​,而是使用。AbstractSessionConfiguration.getSessionName()
  • ​CodecRegistryTupleTypeFactory​​,而是使用。SimpleTupleTypeFactory
  • Spring Data的,请使用驱动程序代替。CqlIdentifierCqlIdentifier
  • ​forceQuote​​属性作为引号不再需要。正确转义保留关键字并注意区分大小写。CqlIdentifier
  • ​fetchSize​​Onandtypes已被弃用,使用代替QueryOptions…CqlTemplatepageSize
  • ​CassandraMappingContext.setUserTypeResolver(…)​​,和:在 上配置这些属性。CassandraMappingContext.setCodecRegistry(…)CassandraMappingContext.setCustomConversions(…)CassandraConverter
  • ​TupleTypeFactory​​和:不再用作卡桑德拉驱动程序与工厂方法的船。CassandraMappingContext.setTupleTypeFactory(…)TupleTypeFactoryDataTypes.tupleOf(…)
  • 不推荐通过 () 创建模式。 通过 () 创建密钥空间不受影响。CqlSessionFactoryBeancassandra:sessionCqlSessionFactoryBeancassandra:session

清除

配置接口
  • ​PoolingOptionsFactoryBean​
  • ​SocketOptionsFactoryBean​
  • ​CassandraClusterFactoryBean​
  • ​CassandraClusterParser​
  • ​CassandraCqlClusterFactoryBean​
  • ​CassandraCqlClusterParser​
  • ​CassandraCqlSessionParser​
  • ​AbstractClusterConfiguration​
  • ​ClusterBuilderConfigurer​​(使用代替SessionBuilderConfigurer
公用事业
  • ​GuavaListenableFutureAdapter​
  • ​QueryOptions​​和构造函数获取和参数。 将构建器与执行配置文件结合使用作为替换。WriteOptionsConsistencyLevelRetryPolicy
  • ​CassandraAccessor.setRetryPolicy(…)​​和方法。 使用执行配置文件作为替换。ReactiveCqlTemplate.setRetryPolicy(…)
命名空间支持
  • ​cql​​命名空间(,使用代替)http://www.springframework.org/schema/cqlhttp://www.springframework.org/schema/data/cassandra
  • ​cassandra:cluster​​(终结点属性合并到cassandra:session)
  • ​cql:template​​,使用代替cassandra:cql-template
  • 删除了隐式 Bean 注册映射上下文、上下文和模板 API bean。 这些必须明确声明。

增加

配置接口
  • ​CqlSessionFactoryBean​
  • ​InitializeKeyspaceBeanDefinitionParser​
  • ​SessionFactoryFactoryBean​​包括通过以下方式创建架构KeyspacePopulator
  • ​KeyspacePopulator​​和初始化密钥空间SessionFactoryInitializer
命名空间支持
  • ​cassandra:cluster​​(终结点属性合并到cassandra:session)
  • ​cassandra:initialize-keyspace​​命名空间支持
  • ​cassandra:session-factory​​有支持cassandra:script

从 Spring Data Cassandra 3.x 到 4.x 的迁移指南

Spring Data for Apache Cassandra 4.0 在从早期版本升级时引入了一组重大更改。

异步模板接口

发表评论

相关文章