《Spring Data 官方文檔》Reference Documentation至5.2. Examples Repository

杜老師說 2022-01-07 05:21:14 阅读数:55

spring data 官方 reference documentation

原文鏈接 譯者:flystarfly

參考文檔

文檔結構

參考文檔的這一部分講解Spring Data Cassandra所提供的核心功能.

Cassandra 支持 介紹 Cassandra 模塊特性設置。

Cassandra 資源庫 介紹 Cassandra 所支持的資源。

5. Cassandra 支持

Cassandra 包含了非常廣泛的特性, 其總結如下

  • Spring配置支持Cassandra驅動的實例類和副本集使用基於Java的@Configuration類或XML命名空間。

  • CassandraTemplate幫助程序類,可提高執行常用Cassandra操作的生產率。包括CQL錶和POJO之間的完整對象映射。

  • 將异常翻譯到Spring的可移植性數據訪問异常層次體系中去

  • 與Spring轉換服務集成的特性豐富的對象映射

  • 基於注釋的映射元數據,但可擴展以支持其他元數據格式

  • 持久性和映射生命周期事件

  • 基於 Java 的查詢、 標准和更新 Dsl

  • 自動實現Repository接口,包括支持自定義finder方法。

對於大多數任務,您會發現自己在使用’CassandraTemplate’或Repository支持時,這兩者都利用了豐富的映射功能。CassandraTemplate是尋找訪問功能(例如遞增計數器或點對點CRUD操作)的所在。CassandraTemplate還提供了回調方法,以便於您輕松獲取低級API工件,如“com.datastax.driver.core.Session”,以便與Cassandra直接通信。對各類API工件上進行命名約定的目的是複制基礎DataStax Java驅動程序中的這些約定,以便您可以輕松地將現有知識與Spring API對應起來。

5.1. 入門

Spring Data Cassandra使用DataStax Java Driver版本2.X,它支持DataStax Enterprise 4 / Cassandra 2.0和Java SE 6或更高版本。推薦最新的商業版本(本文用2.X)。一個簡單的設置引導工作環境的方法是在 STS中創建一個基於Spring的項目。

首先,您需要設置一臺Cassandra服務器,讓它處於運行起來。

在STS上創建一個Spring項目, 步驟是 File → New → Spring Template Project → Simple Spring Utility Project → 按 Yes 然後確認。然後輸入項目和包名稱,如org.spring.cassandra.example。

然後將以下內容添加到pom.xml的dependencies中。

<dependencies> <!-- other dependency elements omitted --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-cassandra</artifactId> <version>1.0.0.RELEASE</version> </dependency></dependencies>

還可以在pom.xml中更改Spring的版本

<spring.framework.version>3.2.8.RELEASE</spring.framework.version>

您還需要將maven的Spring Milestone存儲庫的比特置添加到與您的pom.xml比特於同一級別的 元素

<repositories> <repository> <id>spring-milestone</id> <name>Spring Maven MILESTONE Repository</name> <url>http://repo.spring.io/libs-milestone</url> </repository></repositories>

這個資源庫同樣也可在這裏瀏覽。

創建一個簡單的持久化的 Employee 類

package org.spring.cassandra.example;import org.springframework.data.cassandra.mapping.PrimaryKey;import org.springframework.data.cassandra.mapping.Table;@Tablepublic class Person { @PrimaryKey private String id; private String name; private int age; public Person(String id, String name, int age) { this.id = id; this.name = name; this.age = age; } public String getId() { return id; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; }}

然後在main application中去運行

package org.spring.cassandra.example;import java.net.InetAddress;import java.net.UnknownHostException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.data.cassandra.core.CassandraOperations;import org.springframework.data.cassandra.core.CassandraTemplate;import com.datastax.driver.core.Cluster;import com.datastax.driver.core.Session;import com.datastax.driver.core.querybuilder.QueryBuilder;import com.datastax.driver.core.querybuilder.Select;public class CassandraApp { private static final Logger LOG = LoggerFactory.getLogger(CassandraApp.class); private static Cluster cluster; private static Session session; public static void main(String[] args) { try { cluster = Cluster.builder().addContactPoints(InetAddress.getLocalHost()).build(); session = cluster.connect("mykeyspace"); CassandraOperations cassandraOps = new CassandraTemplate(session); cassandraOps.insert(new Person("1234567890", "David", 40)); Select s = QueryBuilder.select().from("person"); s.where(QueryBuilder.eq("id", "1234567890")); LOG.info(cassandraOps.queryForObject(s, Person.class).getId()); cassandraOps.truncate("person"); } catch (UnknownHostException e) { e.printStackTrace(); } }}

即使在這個簡單的例子中,也有一些事情值得注意。

  • 您可以使用從Cluster派生的Cassandra會話創建CassandraTemplate的實例。

  • 您必須將您的POJO作為Cassandra添加 @Table注解,並注解@PrimaryKey。 您還可以覆蓋這些映射名稱以匹配你的Cassandra數據庫錶以及列名。

  • 你可以使用CQL語句, 或者DataStax QueryBuilder來構造查詢語句.

5.2. 示例資源庫

在Spring Data Cassandra 1.0.0的初始發布之後,我們將開始使用運行在一個示例庫上的完整示例。

FavoriteLoading添加本文到我的收藏
版权声明:本文为[杜老師說]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201070521140661.html