Cassandra 支援

本文件的這一部分解釋了 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

關閉 Session。

X

核心的 CQL 支援負責處理所有低級別的細節,這些細節可能使 Cassandra 和 CQL 成為一個繁瑣的開發 API。使用對映的實體物件可以實現模式生成、物件對映和 repository 支援。

選擇 Cassandra 資料庫訪問方法

您可以選擇幾種方法作為 Cassandra 資料庫訪問的基礎。Spring 對 Apache Cassandra 的支援有不同的風格。一旦開始使用其中一種方法,您仍然可以混搭,以包含來自不同方法的特性。以下方法效果良好:

  • CqlTemplateReactiveCqlTemplate 是經典的 Spring CQL 方法,也是最受歡迎的方法。這是“最低級別”的方法。請注意,像 CassandraTemplate 這樣的元件在底層使用了 CqlTemplate

  • CassandraTemplate 封裝了 CqlTemplate,提供查詢結果到物件的對映,並使用 SELECTINSERTUPDATEDELETE 方法代替編寫 CQL 語句。這種方法提供了更好的文件和易用性。

  • ReactiveCassandraTemplate 封裝了 ReactiveCqlTemplate,提供查詢結果到物件的對映,並使用 SELECTINSERTUPDATEDELETE 方法代替編寫 CQL 語句。這種方法提供了更好的文件和易用性。

  • Repository 抽象允許您在資料訪問層中建立 repository 宣告。Spring Data 的 repository 抽象的目標是顯著減少為各種持久化儲存實現資料訪問層所需的樣板程式碼數量。

對於大多數資料相關的任務,您可以使用 [Reactive|Async]CassandraTemplateRepository 支援,它們都使用了豐富的物件對映功能。[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 上。