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 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.7Version: 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 ObjectVersion: 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-CassandraWiki: 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
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Vídeo