Cassandra 支援

參考文檔的這部分說明了 Spring Data for Apache Cassandra 提供的核心功能。Spring Data 對於 Apache Cassandra 的支援包含廣泛的功能

  • 透過基於 Java 的 @Configuration 類別或 XML 命名空間,提供 Spring 配置支援。

  • CqlTemplateAsyncCqlTemplateReactiveCqlTemplate 輔助類別,透過正確處理常見的 Cassandra 資料存取操作,提高生產力。

  • CassandraTemplateAsyncCassandraTemplateReactiveCassandraTemplate 輔助類別,在 CQL 表格和 POJO 之間提供物件映射。

  • 將例外狀況轉換為 Spring 可移植的資料存取例外階層。

  • 功能豐富的物件映射,與 Spring 的轉換服務整合。

  • 基於註解的映射元數據,可擴展以支援其他元數據格式。

  • 基於 Java 的查詢、條件和更新 DSL。

  • 自動實作命令式和反應式 Repository 介面,包括對自訂查詢方法的支援。

抽象化

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 來進行開發。使用映射的實體物件允許結構描述生成、物件映射和儲存庫支援。

選擇 Cassandra 資料庫存取的方法

您可以選擇幾種方法作為 Cassandra 資料庫存取的基礎。Spring 對 Apache Cassandra 的支援有多種形式。一旦您開始使用其中一種方法,您仍然可以混合搭配以包含來自不同方法的功能。以下方法效果良好

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

  • CassandraTemplate 包裝了 CqlTemplate,以提供查詢結果到物件的映射,並使用 SELECTINSERTUPDATEDELETE 方法,而無需編寫 CQL 語句。這種方法提供了更好的文檔和易用性。

  • ReactiveCassandraTemplate 包裝了 ReactiveCqlTemplate,以提供查詢結果到物件的映射,並使用 SELECTINSERTUPDATEDELETE 方法,而無需編寫 CQL 語句。這種方法提供了更好的文檔和易用性。

  • 儲存庫抽象化讓您可以在資料存取層中建立儲存庫宣告。Spring Data 儲存庫抽象化的目標是顯著減少實作各種持久化儲存資料存取層所需的樣板程式碼量。

對於大多數以資料為導向的任務,您可以使用 [Reactive|Async]CassandraTemplate 或儲存庫支援,兩者都使用豐富的物件映射功能。[Reactive|Async]CqlTemplate 通常用於遞增計數器或執行 ad-hoc CRUD 操作。[Reactive|Async]CqlTemplate 也提供回呼方法,可以輕鬆取得底層 API 物件,例如 com.datastax.oss.driver.api.core.CqlSession,讓您可以直接與 Cassandra 通訊。Spring Data for Apache Cassandra 在各種 API 中的物件上使用了與 DataStax Java Driver 中一致的命名慣例,以便它們看起來很熟悉,並且您可以將現有的知識映射到 Spring API 上。