閱讀609 返回首頁    go 微軟 go Office


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