Spring Boot 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

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

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

相关文章

php提交表单显示错误,php – 在提交注册表单时使用jQuery显示错误

你需要修好几件事情。>首先&#xff0c;处理注册过程的文件不应该是与表单相同的文件。>它纯粹用于处理数据&#xff0c;因此不能使用头(“Location&#xff1a;login.php”)直接重定向浏览器。这部分应该由你的JavaScript代码来处理。>您还需要告诉浏览器&#xff0c…

Selenium-键盘操作

在webdriver的Keys类中提供了键盘所有的按键操作,当然也包括一些常见的组合操作如CtrlA全选),CtrlC(复制),CtrlV(粘贴).更多参考官方文档对应的编码http://selenium-python.readthedocs.org/api.html from selenium.webdriver.common.keys import keys send_kyes(Keys.ENTER) …

Python学习笔记----try...except...else

Python 中的异常处理&#xff1a; 一、try...except...else 程序运行过程中会出现类似以下错误&#xff1a; 1 a10 2 b0 3 ca/b 4 print(c) 运行结果为&#xff1a; Traceback (most recent call last): File "D:/Study/s14/day4/临时.py", line 13, in <module&g…

matlab_ga(),matlab遗传算法ga函数

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼function optimization4()A[];b[];Aeq[];beq[];LB[0.1;0.03;0.03;0.1;0.03;0.03];UB[0.4;0.06;0.06;0.4;0.06;0.06];nvars6;optionsgaoptimset(TimeLimit,inf,PlotFcns,{gaplotbestf},PopulationSize,10,Generations,15,PopInitRan…

Windows负载机JVM 远程监控Linux服务器下tomcat

基本是跟着网上的操作进行的&#xff0c;除了遇到一个Local host name unknown的问题&#xff1a; 一、Linux服务器操作部分 服务器地址&#xff1a;10.64.111.68 首先配置JMX&#xff1a; 1.找到jdk目录 [rootC68 demo]# echo $JAVA_HOME /root/demo/jdk1.8.0_60 2. cd 到/roo…

idea struts插件_使用Struts 2的查询网格(无插件)

idea struts插件当将jQuery与struts 2结合使用时&#xff0c;开发人员被说服使用struts2-jQuery插件 。 因为大多数论坛和其他Internet资源都支持jQuery struts2 jQuery插件。我有这种经验。 我想使用带有struts 2的jQuery网格插件&#xff0c;但不使用struts2 jQuery插件。 对…

matlab 值法确定各指标权重,Matlab学习系列19. 熵值法确定权重

19. 熵值法确定权重一、基本原理在信息论中&#xff0c;熵是对不确定性的一种度量。信息量越大&#xff0c;不确定性就越小&#xff0c;熵也就越小&#xff1b;信息量越小&#xff0c;不确定性越大&#xff0c;熵也越大。 根据熵的特性&#xff0c;可以通过计算熵值来判断一个事…

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

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

php 商城套餐搭配功能,速卖通商品搭配套餐功能已上线!设置速卖通搭配套餐仅需三步...

据雨果网获悉&#xff0c;速卖通商品搭配套餐功能已于 10 月 19 日上线。商品搭配套餐的主要功能及作用&#xff0c;主要是帮助速卖通的卖家&#xff0c;通过自行选择商品&#xff0c;设置不同商品间搭配优惠促销价格&#xff0c;提高商品推广内容的丰富性及专业性&#xff0c;…

二维码支付原理分析及安全性的探究

“二维码支付”安全么&#xff1f; 1 引言 随时支付宝和微信的线下不断推广&#xff0c;目前使用手机进行二维码支付已经逐渐成为一种时尚了。 但是大家有没有思考过&#xff1a;这种便捷的支付方式到底安不安全呢&#xff1f;今天我们就针对这个话题来进行一些探讨吧。 2 …

python创建一个包,如何从python包创建一个osx应用程序/ dmg?

我不知道正确的方法&#xff0c;但是这种手动方法是我用于简单脚本的方法&#xff0c;似乎已经适当地执行了。我会假设我所在的任何目录&#xff0c;我的程序的Python文件都在相对的src /目录中&#xff0c;我要执行的文件(具有正确的shebang和执行权限)被命名为main.py。$ mkd…

自定义类加载器

转载自&#xff1a;http://www.cnblogs.com/xrq730/p/4847337.html 为什么要自定义类加载器转载于:https://www.cnblogs.com/IvySue/p/7490656.html

guice spring_Spring vs Guice:重要的一个关键区别

guice spring根据弹簧对象的名称识别它们 不管使用XML还是Java配置都没有关系&#xff0c;Spring范围大致类似于Map <String&#xff0c;Object>结构。 这意味着您不能有两个名称相同的对象 。 为什么这是一件坏事&#xff1f; 如果您的大型应用程序具有许多Configuratio…

query row php,php – 如何在Codeigniter上使用$query- row获取类对象

我目前正在使用Codeigniter框架.在下面的代码中,我想获得一个Animal_model对象,而不是stdClass对象.class Animal_model extends CI_Model{var $idanimal;var $name;public static $table animals;function __construct() {parent::__construct();}function getone(self $anim…

vue2.0版本指令v-if与v-show的区别

v-if&#xff1a; 判断是否加载&#xff0c;可以减轻服务器的压力&#xff0c;在需要时加载。 v-show&#xff1a;调整css dispaly属性&#xff0c;可以使客户端操作更加流畅。 v-if示例&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF…

oracle 中增加行,Oracle中实现FORM表单插入、锁定、更新行、删除行的包

此包写在oracle数据库中&#xff0c;供Form表单调用&#xff1a;CREATE OR REPLACE PACKAGE BODY cux_main_pkg AS/*** PROCEDURE: insert_row()***/PROCEDURE insert_row(x_row_id IN OUT VARCHAR2,x_insp_header_id IN OUT NUMBER,p_org_id IN…

IE8兼容问题

setInterval 的用法如下&#xff1a; function func() { setInterval("alert()", 1000, this); // chrome 适用, 但不能传参数 setInterval("alert", 1000, this); // chrome、ie8 都不适用 setInterval(alert, 1000, this); // chrome 适用&…

CUBA平台正在开源

期待已久的时刻已经到来&#xff0c;现在我们很高兴地宣布&#xff0c; CUBA平台终于加入了自由软件社区&#xff01; 从现在开始&#xff0c;平台的所有运行时部分都是开源的&#xff0c;并根据Apache 2.0许可进行分发。 这意味着您将完全可以免费创建和分发应用程序&#xff…

oracle 9i 手工建库,简单记录Oracle 9i数据库手工建库过程

简单记录Oracle 9i数据库手工建库过程Oracle 9i手工建库By Oracle老菜今天客户要用oracle 9.2.0.5&#xff0c;aix 6.1已经不支持了&#xff0c;只好从别的数据库把软件拷贝过来重编译。但是建库只能用手工建库了。很久没有使用手工建库了&#xff0c;简单记录下建库过程1.设置…

LazyInitializationException的四个解决方案–第2部分

本文从本教程的第1部分继续。 有状态EJB使用PersistenceContextType.EXTENDED进行负载收集 该方法只能应用于与Full JEE环境兼容的应用程序&#xff1a;将EJB与PersistenceContextType.EXTENDED一起使用。 检查下面的代码&#xff0c;DAO的样子&#xff1a; package com.ejb…