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

原文链接 译者: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;

@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 [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的初始发布之后,我们将开始使用运行在一个示例库上的完整示例。

  • Trackback 关闭
  • 评论 (0)
  1. 暂无评论

return top