2016-07-21 64 views
2

我開始學習Cassandra使用java,完成休眠後。我真的很驚訝數據是通過Java從cassandra插入/拉出/刪除的,而java最近倒退了。因爲,hibernate提供了一種與數據庫進行通信的非常簡單的方法,Java開發人員不需要知道數據庫查詢語法等。它主要是基於方法的操作,用於與數據庫進行通信。但是,如果我想通過java與cassandra進行通信,那麼所有內容都是以SQL格式表達的,我的意思是他們將其命名爲CQL,但是當我將它與休眠進行比較時,發生事情的方式讓我感到非常驚訝。Cassandra通過java 休眠

我在這裏的問題是,有沒有什麼辦法通過在O-R映射樣式中的java與cassandra進行通信/執行CRUD操作,或者hibernate是否支持cassandra連接?

回答

3

Cassandra不是一個關係數據庫,使用關係映射器不會那麼簡單。沒有連接,它不支持SQL。

java drivers對象映射器可能最接近您所尋找的。對於Cassandra表上的基本CRUD映射。 查看文檔在這裏:https://docs.datastax.com/en/developer/java-driver/3.0/supplemental/manual/object_mapper

@Table(name = "posts") 
public static class Post { 

    private String title; 
    private String content; 
    private InetAddress device; 

    @ClusteringColumn 
    @Column(name = "post_id") 
    private UUID postId; 

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


    private Set<String> tags; 
    ... 
} 
1

您可以使用卡桑德拉Solr的或星火執行CRUD操作。 Example
現在,不要將Cassandra與任何RDBMS進行比較。在卡桑德拉沒有關於關係的概念。所以,小心點。如果你想不卡桑德拉(類似於休眠)的許多知識來從卡桑德拉的數據,您可以嘗試星火:

JavaRDD<Student> studentObj = CassandraJavaUtil.javaFunctions(sc).cassandraTable("schema", "student_table",CassandraJavaUtil.mapRowTo(Student.class)).where("id=1"); 

記住,星火主要是爲了分析的目的。 我還發現了一些新的OGM工具,您可以嘗試:

  1. http://hibernate.org/ogm/

  2. https://github.com/impetus-opensource/Kundera