对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Data Cassandra 4.3.1Spring中文文档

Spring Data for Apache Cassandra 需要 Apache Cassandra 2.1 或更高版本以及 Datastax Java Driver 4.0 或更高版本。 快速设置和引导工作环境的一种简单方法是在 Spring Tools 中创建一个基于 Spring 的项目或使用 start.spring.ioSpring中文文档

示例存储库

要了解该库的工作原理,您可以下载并尝试几个示例Spring中文文档

世界您好

首先,您需要设置一个正在运行的 Apache Cassandra 服务器。 有关如何启动 Apache Cassandra 的说明,请参阅 Apache Cassandra 快速入门指南。 安装后,启动 Cassandra 通常只需执行以下命令:.CASSANDRA_HOME/bin/cassandra -fSpring中文文档

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

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

<dependencies>

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

</dependencies>

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

<spring.version>6.1.9</spring.version>

如果使用里程碑版本而不是 GA 版本,您还需要将 Maven 的 Spring Milestone 存储库的位置添加到您的 pom.xml 文件中,以便它位于元素的同一级别,如下所示:<dependencies/>Spring中文文档

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

存储库也可以在此处浏览Spring中文文档

您还可以在此处浏览所有 Spring 存储库。Spring中文文档

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

为此,请首先创建一个简单的域对象类来保存,如以下示例所示:Spring中文文档

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

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

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

}
package org.springframework.data.cassandra.example;

import reactor.core.publisher.Mono;

import java.util.UUID;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.data.cassandra.core.ReactiveCassandraOperations;
import org.springframework.data.cassandra.core.ReactiveCassandraTemplate;
import org.springframework.data.cassandra.core.cql.session.DefaultBridgedReactiveSession;
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 ReactiveCassandraApplication {

	private static final Log LOG = LogFactory.getLog(ReactiveCassandraApplication.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();

		 ReactiveCassandraOperations template = new ReactiveCassandraTemplate(new DefaultBridgedReactiveSession(cqlSession));

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

    jonDoe.flatMap(it -> template.selectOne(Query.query(Criteria.where("id").is(it.getId())), Person.class))
				.doOnNext(it -> LOG.info(it.toString()))
        .then(template.truncate(Person.class))
        .block();

		cqlSession.close();
	}

}

即使在这个简单的例子中,也有一些值得注意的事情需要指出:Spring中文文档

  • 您可以使用 Cassandra 创建 的实例(或用于响应式使用)。CassandraTemplateReactiveCassandraTemplateCqlSessionSpring中文文档

  • 您必须将 POJO 注释为 Cassandra 实体,并注释 . (可选)可以覆盖这些映射名称以匹配 Cassandra 数据库表和列名称。@Table@PrimaryKeySpring中文文档

  • 您可以使用原始 CQL 或 DataStax API 来构造查询。QueryBuilderSpring中文文档