Cassandra 支持
本文档的这一部分解释了 Spring Data for Apache Cassandra 提供的核心功能。Spring Data 对 Apache Cassandra 的支持包含广泛的特性:
-
Spring 配置支持,使用基于 Java 的
@Configuration
类或 XML 命名空间。 -
CqlTemplate
、AsyncCqlTemplate
和ReactiveCqlTemplate
辅助类,通过正确处理常见的 Cassandra 数据访问操作来提高生产力。 -
CassandraTemplate
、AsyncCassandraTemplate
和ReactiveCassandraTemplate
辅助类,提供 CQL 表和 POJO 之间的对象映射。 -
异常转换 为 Spring 可移植的 数据访问异常体系结构。
-
功能丰富的对象映射,与 Spring 的 Conversion Service 集成。
-
基于注解的映射元数据,可扩展以支持其他元数据格式。
-
基于 Java 的查询、条件和更新 DSL。
-
自动实现命令式和响应式
Repository
接口,包括支持自定义查询方法。
抽象
Spring Data for Apache Cassandra 允许在 CQL 和实体两个层面进行交互。
Spring Data for Apache Cassandra 抽象提供的价值或许最好地体现在下表中列出的操作序列中。下表显示了哪些操作由 Spring 负责,哪些操作由您(应用程序开发者)负责。
操作 | Spring | 您 |
---|---|---|
定义连接参数。 |
X |
|
打开连接。 |
X |
|
指定 CQL 语句。 |
X |
|
声明参数并提供参数值 |
X |
|
准备并运行语句。 |
X |
|
设置循环以遍历结果(如果有)。 |
X |
|
处理每次迭代。 |
X |
|
处理任何异常。 |
X |
|
关闭 Session。 |
X |
核心的 CQL 支持负责处理所有低级别的细节,这些细节可能使 Cassandra 和 CQL 成为一个繁琐的开发 API。使用映射的实体对象可以实现模式生成、对象映射和 repository 支持。
选择 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 语句。这种方法提供了更好的文档和易用性。 -
Repository 抽象允许您在数据访问层中创建 repository 声明。Spring Data 的 repository 抽象的目标是显著减少为各种持久化存储实现数据访问层所需的样板代码数量。
对于大多数数据相关的任务,您可以使用 [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 上。