Cassandra Support
-
基于 Java 的配置和 XML 命名空间
-
用于提高常见 Cassandra 数据访问操作效率的 helper 类
-
将 CQL 表和 POJO 进行对象映射的 Helper 类
-
将异常转换为 Spring 的数据访问异常层次结构
-
与 Spring 转换服务集成的功能丰富的对象映射
-
可扩展以支持其他元数据格式的基于注解的映射元数据
-
基于 Java 的查询、条件和更新 DSL
-
对命令式和响应式 Repository 接口的自动实现,包括对自定义查询方法的支持
Spring Data for Apache Cassandra 允许在 CQL 和实体级别进行交互,抽象并处理 Cassandra 和 CQL 的低级别细节。它提供了多种方法来访问 Cassandra 数据库,包括 CqlTemplate、CassandraTemplate 和 Repository Abstraction。
参考文档的这一部分解释了 Spring Data for Apache Cassandra 提供的核心功能。Spring Data 对 Apache Cassandra 的支持包含广泛的功能:
-
带有 xref:cassandra/configuration.adoc[Java-based
@Configuration
类或 XML 命名空间的 Spring 配置支持。 -
xref:cassandra/cql-template.adoc[
CqlTemplate
、AsyncCqlTemplate
和ReactiveCqlTemplate
帮助类,通过正常处理常见cassandra数据访问操作,可提高生产效率。 -
xref:cassandra/template.adoc[
CassandraTemplate
、AsyncCassandraTemplate
和ReactiveCassandraTemplate
帮助类,在 CQL 表和 POJO 之间提供对象映射。 -
Exception translation Spring 的可移植 数据访问异常层次结构。
-
富特性的 object mapping 与 Spring’s 转换服务 集成。
-
可扩展以支持其他元数据格式的 Annotation-based mapping 元数据。
-
基于 Java 的 query, criteria, and update DSLs。
-
imperative and reactive
Repository
interfaces 的自动实现,包括对 custom query methods 的支持。
Abstractions
Spring Data for Apache Cassandra 允许在 CQL 和实体级别进行交互。
Spring Data for Apache Cassandra 抽象提供的值也许最能通过下表中概述的动作序列体现。该表显示了 Spring 负责哪些动作,而哪些动作是你,应用程序开发人员的责任。
Action | Spring | You |
---|---|---|
Define connection parameters. |
X |
|
Open the connection. |
X |
|
Specify the CQL statement. |
X |
|
声明参数并提供参数值 |
X |
|
准备并运行语句。 |
X |
|
设置循环以遍历结果(如果有)。 |
X |
|
为每次迭代执行工作。 |
X |
|
Process any exception. |
X |
|
Close the Session. |
X |
核心 CQL 支持负责处理可能让 Cassandra 和 CQL 成为此类繁琐 API 的所有低级别详细信息,并且无法与之开发。使用映射实体对象允许生成架构、对象映射和存储库支持。
Choosing an Approach for Cassandra Database Access
作为 Cassandra 数据库访问的基础,你可以选择几种方法。Spring 对 Apache Cassandra 的支持有不同的版本。在开始使用这些方法之一后,你仍然可以混合匹配,以包含来自不同方法的功能。下列方法效果不错:
-
xref:cassandra/cql-template.adoc[
CqlTemplate
和 xref:cassandra/reactive-cassandra.adoc[ReactiveCqlTemplate
是典型的 Spring CQL 方法,也是最流行的方法。这是 “lowest-level” 方法。请注意,诸如CassandraTemplate
之类组件在底层使用CqlTemplate
。 -
xref:cassandra/template.adoc[
CassandraTemplate
包装CqlTemplate
提供查询结果到对象映射以及使用SELECT
、INSERT
、UPDATE
和DELETE
方法而不是编写 CQL 语句。此方法提供更好的文档编制及易用性。 -
xref:cassandra/reactive-cassandra.adoc[
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 通信。适用于 Apache Cassandra 的 Spring Data 在各个 API 中的对象上使用一致的命名约定,以便与 DataStax Java 驱动程序中的命名约定相对应,以便它们熟悉且你可以在 Spring API 上映射现有知识。