跳到主要内容
版本:5.1.1

Cassandra 支持

Doubao 中英对照 Cassandra Support

本部分参考文档介绍 Spring Data for Apache Cassandra 提供的核心功能。Spring Data 对 Apache Cassandra 的支持涵盖广泛的特性:

抽象​

Spring Data for Apache Cassandra 允许在 CQL 层面和实体层面进行交互。

Spring Data for Apache Cassandra 抽象所带来的价值,或许最能通过下表所列的一系列操作来说明。该表展示了哪些操作由 Spring 负责,哪些操作由您(应用开发者)负责。

表 1. Spring Data for Apache Cassandra——谁做什么?

操作Spring您
定义连接参数。X
打开连接。X
指定 CQL 语句。X
声明参数并提供参数值X
准备并运行语句。X
设置循环以遍历结果(如果有)。X
对每次迭代执行操作。X
处理任何异常。X
关闭会话。X

核心 CQL 支持处理了所有底层细节,正是这些细节让 Cassandra 和 CQL 成为一个开发起来颇为繁琐的 API。使用已映射的实体对象可以实现模式生成、对象映射和仓库支持。

选择 Cassandra 数据库访问方式​

您可以在多种方式中选择一种作为 Cassandra 数据库访问的基础。Spring 对 Apache Cassandra 的支持有不同的风格。一旦开始使用其中一种方式,您仍然可以混合搭配,引入另一种方式的特性。以下几种方式都能很好地工作:

  • CqlTemplate 和 ReactiveCqlTemplate 是经典的 Spring CQL 方式,也是最流行的。这是“最低层”的方式。请注意,像 CassandraTemplate 这样的组件在底层使用的就是 CqlTemplate。

  • CassandraTemplate 封装了 CqlTemplate,提供查询结果到对象的映射,并使用 SELECT、INSERT、UPDATE 和 DELETE 方法,而不必编写 CQL 语句。这种方式文档更完善、更易用。

  • ReactiveCassandraTemplate 封装了 ReactiveCqlTemplate,提供查询结果到对象的映射,并使用 SELECT、INSERT、UPDATE 和 DELETE 方法,而不必编写 CQL 语句。这种方式文档更完善、更易用。

  • 仓库抽象让您可以在数据访问层中创建仓库声明。Spring Data 仓库抽象的目标是显著减少为各种持久化存储实现数据访问层所需的样板代码量。

对于大多数面向数据的任务,您可以使用 [Reactive|Async]CassandraTemplate 或 Repository 支持,二者都使用丰富的对象映射功能。[Reactive|Async]CqlTemplate 通常用于递增计数器或执行临时的 CRUD 操作。[Reactive|Async]CqlTemplate 还提供回调方法,方便您获取底层 API 对象,例如 com.datastax.oss.driver.api.core.CqlSession,从而直接与 Cassandra 通信。Spring Data for Apache Cassandra 在各种 API 上对对象采用与 DataStax Java Driver 一致的命名约定,使它们彼此熟悉,便于您将已有知识迁移到 Spring API 上。

本节小结​

📄️CQL Template API

CqlTemplate 类(及其响应式变体 ReactiveCqlTemplate )是核心 CQL 包中的核心类。它负责资源的创建与释放。它执行核心 CQL 工作流的基本任务,例如语句的创建和执行,而把提供 CQL 和提取结果的工作留给应用代码。 CqlTemplate 类执行 CQL 查询和更新语句,遍历 ResultSet 实例并提取返回的参数值。它还捕获 CQL 异常,并将其转换为 org.springframework.dao 包中定义的通用、信息更丰富的异常层次结构。