cassandra_Spring Boot Cassandra的第一步

cassandra

如果您想通过Spring Boot开始使用Cassandra NoSQL数据库,最好的资源可能是此处提供的Cassandra示例以及Spring数据Cassandra文档 。

通过实际在本地安装Cassandra并对其进行基本测试,我将采取一些绕过的方式,我的目标是在下一篇博客文章中将此示例开发为更全面的示例。

设置本地Cassandra实例

您的工作量可能会有所不同,但是要在本地安装Cassandra的最简单方法是使用此处提供的Cassandra集群管理器(ccm)实用程序。

ccm create test -v 2.2.5 -n 3 -s

或更传统的方法可能只是从Apache站点下载它。 如果您一直沿用,最适合我的Cassandra版本是2.2.5。

通过以上两种方法之一,使用ccm启动Cassandra:

ccm start test

或从Apache站点下载:

bin/cassandra -f

-f标志将使进程保持在前台,一旦完成样本,以这种方式停止进程将非常容易。

现在连接到此Cassandra实例:

bin/cqlsh

并创建一个示例Cassandra键空间:

CREATE KEYSPACE IF NOT EXISTS sample WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};

使用Spring Boot Cassandra

与Spring Boot相关的任何事情,都有一个启动器可用于拉入Cassandra的所有相关依赖关系,在此处指定为gradle依赖关系:

compile('org.springframework.boot:spring-boot-starter-data-cassandra')

这将拉入触发与Cassandra相关的实例自动配置的依赖关系-主要是一个Cassandra会话 。

对于示例,我定义了一个名为Hotel的实体,它通过以下方式定义:

package cass.domain;import org.springframework.data.cassandra.mapping.PrimaryKey;
import org.springframework.data.cassandra.mapping.Table;import java.io.Serializable;
import java.util.UUID;@Table("hotels")
public class Hotel implements Serializable {private static final long serialVersionUID = 1L;@PrimaryKeyprivate UUID id;private String name;private String address;private String zip;private Integer version;public Hotel() {}public Hotel(String name) {this.name = name;}public UUID getId() {return id;}public String getName() {return this.name;}public String getAddress() {return this.address;}public String getZip() {return this.zip;}public void setId(UUID id) {this.id = id;}public void setName(String name) {this.name = name;}public void setAddress(String address) {this.address = address;}public void setZip(String zip) {this.zip = zip;}public Integer getVersion() {return version;}public void setVersion(Integer version) {this.version = version;}}

和Spring数据存储库来管理该实体:

import cass.domain.Hotel;
import org.springframework.data.repository.CrudRepository;import java.util.UUID;public interface HotelRepository extends CrudRepository<Hotel, UUID>{}

需要一个相应的cql表来保存此实体:

CREATE TABLE IF NOT EXISTS  sample.hotels (id UUID,name varchar,address varchar,zip varchar,version int,primary key((id))
);

本质上就是这样,对Cassandra的Spring数据支持现在将管理该实体的所有CRUD操作,并且测试如下所示:

import cass.domain.Hotel;
import cass.repository.HotelRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.UUID;import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SampleCassandraApplication.class)
public class SampleCassandraApplicationTest {@Autowiredprivate HotelRepository hotelRepository;@Testpublic void repositoryCrudOperations() {Hotel sample = sampleHotel();this.hotelRepository.save(sample);Hotel savedHotel = this.hotelRepository.findOne(sample.getId());assertThat(savedHotel.getName(), equalTo("Sample Hotel"));this.hotelRepository.delete(savedHotel);}private Hotel sampleHotel() {Hotel hotel = new Hotel();hotel.setId(UUID.randomUUID());hotel.setName("Sample Hotel");hotel.setAddress("Sample Address");hotel.setZip("8764");return hotel;}}

这是此示例的github回购。 这个示例还没有太多,在下一篇博客文章中,我将对该示例进行增强,以说明以下事实:了解NoSQL系统中整个集群中的数据分布以及此处的Hotel这样的实体如何能够非常重要。为有效的CRUD操作建模。

翻译自: https://www.javacodegeeks.com/2016/04/first-steps-spring-boot-cassandra.html

cassandra

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 内核 性能,Linux内核十个版本性能对比

【IT168 评论】从2008年1月底至今&#xff0c;Linux Kernel系统内核已经先后升级了十次&#xff0c;版本号也从2.6.24上升到2.6.33&#xff0c;并且下个版本2.6.34也已进入开发阶段。今天我们就看看过去两年内这十个版本在性能上有何差异。测试平台是一套工作站系统&#xff0c…

python字符串split_python字符串之split

函数&#xff1a;split() Python中有split()和os.path.split()两个函数&#xff0c;具体作用如下&#xff1a; split()&#xff1a;拆分字符串。通过指定分隔符对字符串进行切片&#xff0c;并返回分割后的字符串列表&#xff08;list&#xff09; os.path.split()&#xff1a;…

应用程序缓存_应用程序模块和实体缓存

应用程序缓存任何具有ADF业务组件基础知识的ADF开发人员都应该熟悉下图&#xff1a; 它代表运行时ADF业务组件的核心构建块。 有一个包含视图对象实例的根应用程序模块实例。 视图对象实例可能由存储在实体集合或换句话说就是实体缓存中的实体对象备份。 根应用程序模块可能还…

虚拟linux输入命令没有权限,Linux命令_vi_权限管理

3.2、vi的高级使用* 查找在命令模式下&#xff0c;输入/xxx&#xff0c;就可以查找到xxx* 快速切换行在命令模式下&#xff0c;输入:num&#xff0c;就可以快速切换到num行* 设置显示行号在命令模式下&#xff0c;输入:set nu&#xff0c;就可以显示行号注&#xff1a;设置不显…

【开源项目】超级播放器1.0

面向对象开发的五大基本原则 单一职责 各个模块相对独立&#xff0c;优点一&#xff1a;在修改其中某个模块的时候不会对其他模块造成影响&#xff1b;优点二&#xff1a;可以对各个模块进行单独的测试&#xff1b;例如解封装模块和解码模块相互独立设计。 开闭原则 对扩展…

python字符串排序_Python-如何对字符串列表进行排序?

小编典典 基本答案&#xff1a; mylist ["b", "C", "A"] mylist.sort() 这会修改你的原始列表&#xff08;即就地排序&#xff09;。要获得列表的排序副本&#xff0c;而无需更改原始副本&#xff0c;请使用以下sorted()函数&#xff1a; for x…

jsp界面自动生成文件注释_实施注释界面

jsp界面自动生成文件注释对于Java开发人员而言&#xff0c;每天都需要使用注释。 如果没有其他简单的Override注释&#xff0c;那该响了。 创建注释要复杂一些。 在运行时通过反射使用“自制”注释或在编译时调用注释处理器也是一种复杂性。 但是我们很少“实现”注释接口。 暗…

linux c 数据写入硬盘分区,Linux操作篇之分区/磁盘扩容(一)

在实际工作中&#xff0c;系统的运行会产生大量的日志 、临时、以及生产文件等数据。所以对磁盘空间也是有一定要求的。但在前期工作中&#xff0c;可能不会需要太大的空间&#xff0c;但是随着后期的使用&#xff0c;存储空间需求很大。这个时候进行扩容就可以了。一般情况下&…

js mztreeview 双击事件_Mac下的Node.js安装教程

前言更多详情&#xff0c;请访问我的 个人博客。什么是Node.jsNodeJS官网上的介绍&#xff1a;Node.js is a platform built on Chromes JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model …

windows运行linux脚本命令大全,查看和运行 Windows PowerShell 脚本

查看和运行 Windows PowerShell 脚本12/19/2014本文内容应用到: Virtual Machine Manager 2008, Virtual Machine Manager 2008 R2, Virtual Machine Manager 2008 R2 SP1如果将 Windows PowerShell 脚本存储到 VMM 库中&#xff0c;则可以在“库”视图中查看、编辑和运行这些脚…

接口中默认方法和静态方法_接口中的默认方法和静态方法

接口中默认方法和静态方法在我们最初的Java 8支持公告中&#xff0c;我们特别提到了流的缺乏&#xff0c;但完全错过了默认/静态本机接口不起作用的事实。 现在&#xff0c;由于有一个警惕的社区成员指出了这一问题&#xff0c;因此此问题已得到解决。 由于限制需要全新构建才…

【FFMPEG源码终极解析】 av_packet_alloc 与 av_packet_free

关于void *av_malloc(size_t size)可以参考av_malloc av_packet_alloc实际是分配AVPacket以后&#xff0c;调用av_init_packet对AVPacket的成员变量进行初始化赋值。 AVPacket *av_packet_alloc(void) {AVPacket *pkt av_mallocz(sizeof(AVPacket));if (!pkt)return pkt;av_…

visual2019没有勾选的在如何加入_发票管理系统完成升级,勾选认证平台改头换面,你所有的问题都在这里!...

发票系统2.0版上线为了进一步优化增值税发票系统&#xff0c;提高用户体验&#xff0c;根据国家税务总局安排部署&#xff0c;我省将于2019年11月1日对增值税发票管理系统进行全面升级改造为增值税发票管理系统2.0版。增值税发票综合服务平台是现有增值税发票选择确认平台的升级…

linux 多线程实现倒计时,Linux用脚本实现“时分秒“倒计时功能

1.怎样实现“时分秒“倒计时在Linux下&#xff0c;脚本的完成相对于C语言来说稍微随意一点&#xff0c;可以按照字的想法写&#xff0c;只要有逻辑就可以了。示例&#xff1a;注意&#xff1a;clean的功能这个命令将会刷新屏幕&#xff0c;本质上只是让终端显示页向后翻了一页&…

【FFMPEG源码终极解析】void av_packet_unref(AVPacket *pkt)

av_packet_unref 该接口使用了如下调用,该接口主要作用是清理AVPacket中的所有空间数据&#xff0c;清理完毕后进行初始化操作&#xff0c;并且将 data 与 size 置为0&#xff0c;方便下次调用。 void av_packet_unref(AVPacket *pkt) {av_packet_free_side_data(pkt);av_buf…

sqoop sqoop2_在Sqoop中管理密码的关键提示

sqoop sqoop2Sqoop是流行的Hadoop数据传输工具。 Sqoop允许从结构化数据存储&#xff08;如关系数据库&#xff0c;企业数据仓库和NoSQL数据存储&#xff09;轻松导入和导出数据。 Sqoop还与Hive&#xff0c;HBase和Oozie等基于Hadoop的系统集成。 在此博客文章中&#xff0c;…

百分比单位始终根据父元素相应值来计算_CSS Viewport 单位,很多人还不知道使用它来快速布局!...

**CSS Viewport units(视口单位)**在过去几年已经出现了&#xff0c;随着时间的推移&#xff0c;越来越多的开发人员开始使用它们。它们的好处在于为我们提供了一种不需要使用J avaScript 就能以动态的方式调整大小的方法。而且&#xff0c;如果它失效&#xff0c;也有很多备用…

java set方法不生效_使您的Java 8方法引用生效

java set方法不生效方法参考 众所周知&#xff0c;我们可以使用Java 8中的方法引用 &#xff08;例如String::isEmpty来引用例如在元素上流式传输时使用的方法。 看一下以下代码片段&#xff1a; Stream.of("A", "", "B").filter(Stream::isEmp…

linux macos 界面对比,GNOME 3与Mac OS X 10.7 (Lion)的纵览模式比较

在Twitter上与ibuick同学聊了一些Mac OS X新的设计&#xff0c;还有GNOME等。我突然意识到&#xff0c;Apple并不是引领一切的&#xff0c;很多方面&#xff0c;它甚至是向Linux下的GNOME、KDE学来的(比如出现于Leopard的Space)。更有意思的是&#xff0c;前些日子我刚玩过最新…