跳到主要内容

Cassandra 支持

ChatGPT-4o-mini 中英对照 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 - 谁做什么?

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

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

选择 Cassandra 数据库访问的方法

您可以选择几种方法作为 Cassandra 数据库访问的基础。Spring 对 Apache Cassandra 的支持有不同的方式。一旦您开始使用其中一种方法,您仍然可以混合搭配,加入来自其他方法的特性。以下方法效果很好:

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

  • CassandraTemplate 封装了 CqlTemplate,提供查询结果到对象的映射,并使用 SELECTINSERTUPDATEDELETE 方法,而不是编写 CQL 语句。这种方法提供了更好的文档和易用性。

  • ReactiveCassandraTemplate 封装了 ReactiveCqlTemplate,提供查询结果到对象的映射,并使用 SELECTINSERTUPDATEDELETE 方法,而不是编写 CQL 语句。这种方法提供了更好的文档和易用性。

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

对于大多数数据导向的任务,您可以使用 [Reactive|Async]CassandraTemplateRepository 支持,这两者都使用丰富的对象映射功能。[Reactive|Async]CqlTemplate 通常用于递增计数器或执行临时的 CRUD 操作。[Reactive|Async]CqlTemplate 还提供了回调方法,使您可以轻松获取低级 API 对象,例如 com.datastax.oss.driver.api.core.CqlSession,它允许您直接与 Cassandra 进行通信。Apache Cassandra 的 Spring Data 在各种 API 中对对象使用一致的命名约定,与 DataStax Java Driver 中的对象相同,以便您熟悉,并且可以将您现有的知识映射到 Spring API 上。

章节摘要

📄️ CQL 模板 API

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