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.io.File
- java.nio.file.Path
Histórico das versões
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
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/
Nenhum comentário:
Postar um comentário