Conhecendo o projeto Easy-Cassandra - Java

Veja neste artigo um pouco mais sobre o Projeto Easy-cassandra, que visa facilitar a comunicação com o Apache Cassandra. Persistindo objetos java de uma maneira bastante fácil.

O Easy-Cassandra é um framework ORM e um alto cliente para o Apache Cassandra em java, com ele é possível persistir objetos java de uma maneira muito fácil. Para isso é necessário adicionar anotações em sua Classe. Ele funciona como uma camada de abstração para o Thrift realizando as chamadas para o Cassandra.

O Easy-Cassandra usa a implementação do Thrift e tem como principal objetivo é ter um uso simples. Ele precisa do jdk 7 ou acima para rodar, isso acontece devido há algumas parte de seu código utilizar invokedynamic ao invés do Reflection, assim terá uma resposta ainda mais rápida. O Easy-Cassandra foi o primeiro framework compatível com versões do Cassandra acima da versão 0.8 e 1.0.0, o primeiro a usar o CQL (Cassandra Query Language) além de usar o invokedynamic, que é cerca de quinze vezes mais rápido que o Reflection.

CARACTERÍSTICAS

· Uma espécie de ORM para o Cassandra.
· Precisa apenas de anotações na classe para persistir informações.
· Persiste muito objetos java de uma maneira bastante fácil.
· Escreve e ler no Cassandra com Level Consistency.
· O primeiro compatível com versões acima do Cassandra 0.8.
· Compatível com CQL 2.0.
· O primeiro a usar invokedynamic ao invés de Reflection.
· Sob a licença Apache versão 2.0.

OBJETOS SUPORTADOS

O Easy-Cassandra tem suporte para os seguintes Objetos java:

· todos os tipos primitivos (int, long, float, double, short, byte, boolean)
· java.lang.Boolean
· java.util.Date
· java.lang.Double
· java.lang.Float
· java.lang.Integer
· java.lang.Long
· java.lang.String
· java.lang.Boolean
· java.lang.Byte
· java.lang.Short
· java.lang.Character
· java.nio.file.Path

HISTÓRICO DAS VERSÕES

Versão: 1.0.8

· Seleciona chave pelo comando CQL 'in'
· Cria automaticamente Familia de Coluna em tempo real
· Cria automaticamente índice secundário em tempo real
· Suporte com o CQL 2.0
· Não é necessário criar Família de colunas ou índices secundário. O Easy-Cassandra poderá criar automaticamente em tempo de execução

Versão: 1.0.7

 · atualizada para cassandra-thrift to 1.0.7

Version: 1.0.6

· Correção de Bugs para persistência de Arquivos
· Suporte Calendar interface

Version: 1.0.5

· Agora pode armazenar arquivos
· Suporte java.io.File e java.nio.file.Path

Version: 1.0.4

· Maior performance
· menos memory
· Agora suporta todos os tipos primitivos
· Agora suporta Byte, character, Short, BigInteger e BigDecimal

Version: 1.0.3

· Correções de Bugs com resultados
· Atualização para o cassandra-thrift to 1.0.6
· Agora utilizando java.util.loggin

Version: 1.0.2

· Correções de bugs Boolean's Object

Version: 1.0.1

· Permitido usar ColumnValue e ColumnFamilyValue no modo padrão neste modo será usado o nome do campo ou objeto
· Correções de Bugs

O QUE ESPERAR NAS PRÓXIMAS VERSÕES ?

· Notificações quando não se tem anotações no índice ou chave na Classe
· Recurso de selecionar 'in' no CQL comando
· Cria automaticamente ColumnFamily e em tempo de execução
· Cria automaticamente IndexValue e em tempo de execução
· Suporte de um ou maios índices
· Alimenta objetos a partir de uma Query

Exemplo:

List persons= cassandraQuery.executeQuery("select * from Person").getResultList();

SIMPLES EXEMPLO

@ColumnFamilyValue(nome = "person") public class Person implements Serializable { private static final long serialVersionUID = 3L; @KeyValue(auto=false) private Long id; @IndexValue @ColumnValue(nome = "name") private String name; @ColumnValue(nome = "year") private Integer year; @EnumeratedValue(nome="sex") private Sex sex; @EmbeddedValue private Address address; //getter and setter } Um exemplo simples de anotações em uma classe :

public class PersonDAO { private Persistence persistence; public PersonDAO() { persistence = EasyCassandraManager.getPersistence("javabahia", "localhost", 9160); } public void create(Person bean) { persistence.insert(bean); } public void remove(Person bean) { persistence.delete(bean); } public void remove(Long id){ persistence.deleteByKeyValue(id, Person.class); } public void update(Person bean) { persistence.update(bean); } public Person retrieve(Object id) { return(Person) persistence.findByKey(id, Person.class); } @SuppressWarnings("unchecked") public List listAll() { return persistence.findAll(Person.class); } @SuppressWarnings("unchecked") public List listByIndex(Object index) { return persistence.findByIndex(index, Person.class); } } Um simples DAO realizando chamadas no cassandra

MAIS INFORMAÇÕES

Para saber mais veja: https://github.com/otaviojava/Easy-Cassandra
Wiki: https://github.com/otaviojava/Easy-Cassandra/wiki
Download: https://github.com/otaviojava/Easy-Cassandra/downloads

Se você deseja realizar alguma pergunta, contribuir, compartilhar experiência, fazer alguma coisa no projeto. Faça parte do Google Groups https://groups.google.com/group/easy- cassandra/

Artigos relacionados