阅读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