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>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来构造查询语句.
相关文章
- HarmonyOS3.0尝鲜之关键Js Api--ServiceAbility开发
- 开发成功GitOps模型的三个步骤
- 为有经验用户量身定制的 Linux
- CORS为什么能保障安全?为什么只对复杂请求做预检?
- Linux Mint 21 “Vanessa” 的十大特色
- 一文澄清网上对 ConcurrentHashMap 的一个流传甚广的误解!
- 在 Ubuntu 和 Debian 中使用 apt 命令更新单个软件包
- 如何选择适合的公共 DNS
- 微软修复Windows 11系统“sihost.exe”进程CPU占用过高问题
- 27 个面向开发人员的优秀 Vue.js 开发工具
- 写了个Dubbo接口就能调用其他系统,你知道怎么做到的吗?
- 我们一起聊聊Java 18 新功能,你知道了吗?
- 重新审视分布式系统:永远不会有完美的一致性方案……
- Vue.js设计与实现之权衡的艺术
- Linux下如何配置普通用户的sudo命令权限?
- OpenHarmony 给你的输入法加点彩—星球崛起
- 剖析 Linux 内核在底层是如何工作的
- 如何高效开发相似图像搜索引擎?
- Linux Kernel 5.19 正式发布,支持龙芯 CPU架构
- Findex – 在 Linux 中搜索和启动应用程序的超快速工具