|
对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1! |
|
对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1! |
参考文档的这一部分解释了 Spring Data for Apache Cassandra 提供的核心功能。 Spring Data 对 Apache Cassandra 的支持包含广泛的功能:
-
Spring 配置支持基于 Java 的
@Configuration类或 XML 命名空间。 -
CqlTemplate、AsyncCqlTemplate和ReactiveCqlTemplate帮助程序类,通过正确处理常见的 Cassandra 数据访问操作来提高工作效率。 -
CassandraTemplate、AsyncCassandraTemplate和ReactiveCassandraTemplate帮助程序类,它们在 CQL 表和 POJO 之间提供对象映射。 -
将异常转换为 Spring 的可移植数据访问异常层次结构。
-
基于注释的映射元数据,可扩展以支持其他元数据格式。
-
基于 Java 的查询、条件和更新 DSL。
-
自动实现命令式和反应式
存储库接口,包括对自定义查询方法的支持。
抽象
Spring Data for Apache Cassandra 允许在 CQL 和实体级别进行交互。
Spring Data for Apache Cassandra 抽象提供的值可能最好地通过下表中概述的操作序列来显示。 该表显示了 Spring 负责哪些操作,以及哪些操作由您(应用程序开发人员)负责。
| 行动 | Spring | 你 |
|---|---|---|
定义连接参数。 |
X |
|
打开连接。 |
X |
|
指定 CQL 语句。 |
X |
|
声明参数并提供参数值 |
X |
|
准备并运行语句。 |
X |
|
设置循环以循环访问结果(如果有)。 |
X |
|
为每次迭代执行工作。 |
X |
|
处理任何异常。 |
X |
|
关闭会话。 |
X |
核心 CQL 支持负责处理所有低级细节,这些细节可能会使 Cassandra 和 CQL 成为开发起来的繁琐 API。 使用映射的实体对象允许架构生成、对象映射和存储库支持。
选择 Cassandra 数据库访问方法
您可以在几种方法中进行选择,以用作 Cassandra 数据库访问的基础。 Spring 对 Apache Cassandra 的支持有不同的风格。 开始使用其中一种方法后,您仍然可以混合搭配以包含来自不同方法的功能。 以下方法效果很好:
-
CqlTemplate和ReactiveCqlTemplate是经典的 Spring CQL 方法,也是最流行的方法。 这是“最低级别”的方法。 请注意,像这样的组件使用引擎盖下。CassandraTemplateCqlTemplate -
CassandraTemplate包装 a 以提供查询结果到对象的映射以及 、 、 和 方法的使用,而不是编写 CQL 语句。 这种方法提供了更好的文档和易用性。CqlTemplateSELECTINSERTUPDATEDELETE -
ReactiveCassandraTemplate包装 a 以提供查询结果到对象的映射以及 、 、 和 方法的使用,而不是编写 CQL 语句。 这种方法提供了更好的文档和易用性。ReactiveCqlTemplateSELECTINSERTUPDATEDELETE -
存储库抽象允许您在数据访问层中创建存储库声明。 Spring Data 的存储库抽象的目标是显著减少为各种持久性存储实现数据访问层所需的样板代码量。
对于大多数面向数据的任务,可以使用 或 支持,两者都使用丰富的对象映射功能。 通常用于递增计数器或执行临时 CRUD 操作。 还提供了可轻松获取低级 API 对象的回调方法,例如 ,它允许您直接与 Cassandra 通信。
Spring Data for Apache Cassandra 对各种 API 中的对象使用与 DataStax Java 驱动程序中的对象一致的命名约定,以便它们熟悉,并且您可以将现有知识映射到 Spring API 上。[Reactive|Async]CassandraTemplateRepository[Reactive|Async]CqlTemplate[Reactive|Async]CqlTemplatecom.datastax.oss.driver.api.core.CqlSession
| 行动 | Spring | 你 |
|---|---|---|
定义连接参数。 |
X |
|
打开连接。 |
X |
|
指定 CQL 语句。 |
X |
|
声明参数并提供参数值 |
X |
|
准备并运行语句。 |
X |
|
设置循环以循环访问结果(如果有)。 |
X |
|
为每次迭代执行工作。 |
X |
|
处理任何异常。 |
X |
|
关闭会话。 |
X |