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;

    @PrimaryKey
    private 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 {

 @Autowired
 private HotelRepository hotelRepository;

 @Test
 public 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值