跳到主要内容
版本:4.4.3

入门指南

ChatGPT-4o-mini 中英对照 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。安装完成后,启动 Cassandra 通常只需执行以下命令:CASSANDRA_HOME/bin/cassandra -f。

要在 STS 中创建一个 Spring 项目,请转到 文件 → 新建 → Spring 模板项目 → 简单 Spring 实用程序项目,并在提示时按 Yes。然后输入一个项目名称和一个包名称,例如 org.spring.data.cassandra.example。

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

<dependencies>

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

</dependencies>

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

<spring.version>6.2.3</spring.version>

如果使用里程碑版本而不是 GA 版本,您还需要在 pom.xml 文件中添加 Spring Milestone 仓库的位置,以便它与 <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 中并从 Cassandra 中读取。

要做到这一点,首先创建一个简单的域对象类以进行持久化,如下例所示:

package org.springframework.data.cassandra.example;

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());
}
}

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

package org.springframework.data.cassandra.example;

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 或 Driver 的 QueryBuilder API 来构建查询。