Alguém que trabalha no Android ('gPhone') tem ou conhece um local onde posso encontrar uma boa ferramenta ORM para ele? O código é escrito em Java e o banco de dados é SQLite. O que eu gostaria de encontrar é uma ferramenta que, dada a definição do objeto, possa gerar automaticamente as tabelas e as funções CRUD (isso seria incrível) ou, exceto, uma ferramenta que pode aceitar a definição da tabela, a definição do objeto, e gerar automaticamente a funcionalidade CRUD. O problema é que tudo isso deve acontecer na estrutura do Android, que possui suas próprias convenções sobre como o acesso ao banco de dados funciona.
285
Respostas:
Pensei em adicionar apenas US $ 0,02 aqui sobre o meu pacote ORMLite .
É uma substituição leve para o Hibernate e usa chamadas nativas do banco de dados do sistema operacional Android para oferecer suporte ao SQLite no Android. Ele também suporta muitos outros tipos de banco de dados usando o JDBC em outras arquiteturas. Temos uma lista de discussão do Android para perguntas sobre o ORMLite.
fonte
Esta questão não pode envelhecer, mas as estruturas sugeridas podem. Então, aqui está primeiro uma lista do que acho importante em tais estruturas para comparação:
E aqui está uma lista de estruturas com notas sobre os pontos acima. Procurei um pouco mais como aBatis e Hadi, mas adicionei apenas aqueles que tiveram alguma atividade após 2011.
Eu não tentei nenhum desses, mas talvez eu possa poupar um pouco de tempo os leitores atuais listando os projetos ativos nos dias de hoje. Adicione um comentário se você souber de outros projetos que satisfazem alguns dos pontos acima e têm algum desenvolvimento sério (ao longo de algum tempo) em andamento.
EDIT (2013 nov): atualizou a lista para o status atual dos projetos. Alguns deles adicionaram tags de lançamento aos seus repositórios do github, além do suporte ao Maven / Gradle. Bom trabalho!
EDIT (abril de 2015): atualizou a lista, adicionou Sprinkles (conforme comentário de @AndroidGecko) e Realm.io.
fonte
Se o desempenho e o tamanho do código importarem, consulte greenDAO . Eu sou o autor, e minha motivação para criar outro ORM foi evitar a reflexão nos pontos críticos. Verificou-se que o greenDAO pode ser até 4 vezes mais rápido que o ORMLite. Confira a página de recursos para obter detalhes.
fonte
Não sei de nada exatamente o que você está pedindo, mas há uma alternativa ao SQLite que pode ser útil se os requisitos de arquitetura forem flexíveis. Pode valer a pena conferir o db4o :
fonte
O ActiveAndroid
(US $ 20)parece ser exatamente o que você precisa.fonte
Eu gostei do ActiveAndroid. Parece que foi escrito especificamente para o Android. Isso parece uma vantagem para mim.
Tenho alguma experiência com Ruby on Rails e, se você gosta da maneira Rails do ActiveRecord, pode se mover rapidamente com esta biblioteca.
https://www.activeandroid.com/
fonte
https://github.com/ahmetalpbalkan/orman
A estrutura Orman pode ajudá-lo. É especialmente projetado para isso e muito pequeno e útil.
fonte
Também estou procurando um ORM no Android. Testei o ActiveAndroid , NeoDatis e db4o , e acho que vou usar um dos dois últimos.
NeoDatis e db4o são realmente similares, então gostaria de alguns conselhos para escolher o melhor. Alguém está usando um deles em seu projeto? Vou usá-lo para aplicativos gratuitos e pagos, mas parece que os dois não têm nenhuma limitação de licença para o Android.
Há uma referência aqui que parece dizer que o NeoDatis é mais rápido que o db4o, mas não sei se podemos basear minha opinião nisso.
fonte
Mais um novato: android-active-record. É muito leve e fácil de usar, estrutura de persistência para Android suportada por SQLite http://code.google.com/p/android-active-record/
fonte
O ActiveRecordJS do Aptana é um ORM Javascript que deve ser executado no gPhone. Ele foi projetado para funcionar com o Jaxer e o Gears. Ao usar os adaptadores Jaxer, você pode se conectar ao SQLLite.
UPDATE: Acho que não deixei claro, mas o ActiveRecordJS é um ORM que roda no lado do cliente, o que pode ser uma vantagem para você no gPhone.
fonte
http://hadi.sourceforge.net
Esta ferramenta é muito simples e fácil de usar.
fonte
Eu desenvolvi minha própria implementação do JPA ORM para Android. Ainda não está totalmente completo, mas você pode fazer anotações de classe com as anotações @Entity, @Id, @Column e obter entidades JPA que podem ser armazenadas e recuperadas do banco de dados SQLite. Ele precisa de mais alguns recursos e limpeza antes de publicá-lo ao público, mas se houver interesse suficiente, poderá acelerar meu esforço.
fonte
Mesmo que este seja um post antigo, o tópico ainda é relevante. Por isso, quero compartilhar um artigo interessante e uma boa abordagem para resolver a maioria dos problemas mencionados na pergunta:
http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/
Espero que alguém ache isso tão útil quanto eu!
fonte
Meus próprios DroidParts /http://droidparts.org/ acabaram de chegar à v0.5. É uma biblioteca DI / ORM e muito mais.
Não há muita documentação, mas inclui um aplicativo de amostra.
fonte
Teve experiência negativa com o db4o (v. 8): a indexação não funcionou corretamente (exceção etc.). Portanto, não consegui evitar criar duplicatas em tabelas estrangeiras ao ter objeto na estrutura de objetos. Explicação mais detalhada na minha pergunta . Espero que um dia seja melhor.
fonte