閱讀609 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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來構造查詢語句.

5.2. 示例資源庫

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

轉載自 並發編程網 - ifeve.com

最後更新:2017-05-19 11:31:59

  上一篇:go  《Spring Data 官方文檔翻譯》preface到2.requirements
  下一篇:go  Java 網絡教程: InetAddress