我尝试了一下 Cassandra 的 Java 对象映射器

尝试使用 Cassandra 的 Java 物件映射工具进行操作

当尝试运行从DataStax官方手册中复制粘贴的示例代码时的记录。

前提 – Qian ti

In Chinese, the phrase “前提” can be paraphrased as “前提条件” (qian ti tiao jian).

    • Ubuntu 17.04

 

    • Cassandra 3.10

 

    Java 側の Cassandra Driver 3.2.0

准备中

Cassandra的一方

    1. Cassandra的安装

$ wget http://ftp.jaist.ac.jp/pub/apache/cassandra/3.10/apache-cassandra-3.10-bin.tar.gz
$ tar -zxvf apache-cassandra-3.10-bin.tar.gz
$ sudo mv apache-cassandra-3.10/ /opt/cassandra

启动Cassandra服务器

$ /opt/cassandra/bin/cassandra

创建Keyspace(名称:ks)

$ /opt/cassandra/bin/cqlsh 127.0.0.1 -e “\
CREATE KEYSPACE ks\
WITH REPLICATION = { ‘class’: ‘SimpleStrategy’, ‘replication_factor’: 1 };”

创建Table(名称:users)

$ /opt/cassandra/bin/cqlsh 127.0.0.1 -e “\
CREATE TABLE ks.users (\
user_id uuid,\
name text,\
strength int,\
PRIMARY KEY(user_id, name)\
);”

在Java一端

pom.xml

cassandra-driver-core と cassandra-driver-mapping の依存を追加する

pom.xml

com.datastax.cassandra
cassandra-driver-core
3.2.0

com.datastax.cassandra
cassandra-driver-mapping
3.2.0

ソースコード

マッピング対象のクラス

User.java
package sample;

import com.datastax.driver.mapping.annotations.ClusteringColumn;
import com.datastax.driver.mapping.annotations.Column;
import com.datastax.driver.mapping.annotations.Param;
import com.datastax.driver.mapping.annotations.PartitionKey;
import com.datastax.driver.mapping.annotations.Table;
import java.util.UUID;

@Table(keyspace = “ks”, name = “users”,
readConsistency = “QUORUM”,
writeConsistency = “QUORUM”,
caseSensitiveKeyspace = false,
caseSensitiveTable = false)
public class User {

@PartitionKey
@Column(name = “user_id”)
private UUID userId;

@ClusteringColumn
private String name;

private int strength;

public User(UUID userId, String name, int strength) {
this.userId = userId;
this.name = name;
this.strength = strength;
}
}

メインクラス

Main.java
package sample;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
import com.datastax.driver.mapping.Mapper;
import com.datastax.driver.mapping.MappingManager;
import java.util.UUID;

public class Main {

public static void main(String[] args) {
Cluster cluster = null;
try {
cluster = Cluster.builder()
.addContactPoint(“127.0.0.1”)
.build();
Session session = cluster.connect();
MappingManager manager = new MappingManager(session);
Mapper mapper = manager.mapper(User.class);

User u = new User(UUID.randomUUID(), “John Doe”, 9999);
mapper.save(u);

} finally {
if (cluster != null) {
cluster.close();
}
}
}
}

运行结果

在执行上述主类之后,可以通过 cqlsh 来检查数据是否已经插入。

$ /opt/cassandra/bin/cqlsh 127.0.0.1 -e "SELECT * FROM ks.users;"

 user_id                              | name     | strength
--------------------------------------+----------+----------
 e918961b-57c1-4f5d-8c4e-9d08e9ea4e7a | John Doe |     9999

(1 rows)

请参考

    • https://github.com/datastax/java-driver/blob/3.x/manual/README.md

 

    https://github.com/datastax/java-driver/blob/3.x/manual/object_mapper
广告
将在 10 秒后关闭
bannerAds