Spring Data 官方文檔》Reference Documentation至5.2. Examples Repository
文檔結構
參考文檔的這一部分講解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>https://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;
@Table
public 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 [, 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來構造查詢語句.
最後更新:2017-05-19 11:31:59