跳到主要内容
版本:5.1.1

快速上手

Doubao 中英对照 Getting Started

Spring Data for Apache Cassandra 需要 Apache Cassandra 2.1 或更高版本以及 Datastax Java Driver 4.0 或更高版本。快速搭建并初始化一个可用环境的简便方式是在 Spring Tools 中创建一个基于 Spring 的项目,或使用 start.spring.io。

示例仓库​

为了直观感受该库的工作方式,您可以下载并试用若干示例。

Hello World​

首先,您需要准备一个正在运行的 Apache Cassandra 服务器。有关如何启动 Apache Cassandra 的说明,请参阅 Apache Cassandra Quick Start Guide。安装完成后,启动 Cassandra 通常只需执行以下命令:CASSANDRA_HOME/bin/cassandra -f。

要在 STS 中创建 Spring 项目,请依次选择 File → New → Spring Template Project → Simple Spring Utility Project,并在提示时单击 Yes。然后输入项目名和包名,例如 org.spring.data.cassandra.example。

然后,您可以将以下依赖声明添加到 pom.xml 文件的 dependencies 部分。

<dependencies>

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>5.1.1</version>
</dependency>

</dependencies>

此外,您还应将 pom.xml 文件中的 Spring 版本更改为如下所示:

<spring.version>7.0.9</spring.version>

如果使用的是里程碑版本而非 GA 版本,您还需要将 Maven 的 Spring Milestone 仓库位置添加到 pom.xml 文件中,使其与 <dependencies/> 元素处于同一层级,如下所示:

<repositories>
<repository>
<id>spring-milestone</id>
<name>Spring Maven MILESTONE Repository</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>

该仓库也可在此处浏览。

您也可以在此处浏览所有 Spring 仓库。

现在您可以创建一个简单的 Java 应用,用于向 Cassandra 存储领域对象并从中读取。

为此,首先创建一个要持久化的简单领域对象类,如下例所示:

import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;

@Table
public class Person {

@PrimaryKey private final String id;

private final String name;
private final int age;

public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}

public String getId() {
return id;
}

private String getName() {
return name;
}

private int getAge() {
return age;
}

@Override
public String toString() {
return String.format("{ @type = %1$s, id = %2$s, name = %3$s, age = %4$d }", getClass().getName(), getId(),
getName(), getAge());
}
}

接下来,创建要运行的主应用程序,如下例所示:

import java.util.UUID;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.data.cassandra.core.CassandraOperations;
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.data.cassandra.core.query.Criteria;
import org.springframework.data.cassandra.core.query.Query;

import com.datastax.oss.driver.api.core.CqlSession;

public class CassandraApplication {

private static final Log LOG = LogFactory.getLog(CassandraApplication.class);

private static Person newPerson(String name, int age) {
return new Person(UUID.randomUUID().toString(), name, age);
}

public static void main(String[] args) {

CqlSession cqlSession = CqlSession.builder().withKeyspace("mykeyspace").build();

CassandraOperations template = new CassandraTemplate(cqlSession);

Person jonDoe = template.insert(newPerson("Jon Doe", 40));

LOG.info(template.selectOne(Query.query(Criteria.where("id").is(jonDoe.getId())), Person.class).getId());

template.truncate(Person.class);
cqlSession.close();
}

}

即使在这个简单示例中,也有几点值得指出:

  • 您可以用 Cassandra CqlSession 创建 CassandraTemplate(响应式用法则使用 ReactiveCassandraTemplate)实例。

  • 您必须将 POJO 标注为 Cassandra @Table 实体,并标注 @PrimaryKey。您还可以选择覆盖这些映射名称,以匹配 Cassandra 数据库的表名和列名。

  • 您既可以使用原生 CQL,也可以使用驱动的 QueryBuilder API 来构造查询。