Alguma boa ferramenta ORM para o desenvolvimento do Android? [fechadas]

285

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.

GWLlosa
fonte
Acho que não há nenhum disponível agora.
Mparaz
2
sua 2014. Eu pensei que eu vou mencionar Sprinkles ( github.com/emilsjolander/sprinkles ), já que ninguém tenha mencionado .. 500 estrelas no github, em, observadores de conteúdo centrais meaven, vale a pena conferir
AndroidGecko
É 2015. A Software Tree lançou recentemente o JDXA , um ORM simples, porém poderoso e flexível para Android. Suporta herança, um para um, um para muitos, muitos para um e muitos para muitos relacionamentos. O modelo de programação não invasivo amigável do POJO (Plain Old Java Objects) da JDXA não exige que você altere suas classes Java de nenhuma maneira: - Não há necessidade de subclassificar suas classes de domínio de nenhuma classe base - Não há necessidade de desorganizar seu código-fonte com anotações - não há necessidade de classes DAO - Sem geração de código fonte
Damodar Periwal
Confira este bom tutorial sobre o JDXA ORM .
Damodar Periwal
Se você preferir código Android natural simples, sem dependências adicionais da biblioteca, dê uma olhada no exemplo do gerador de código de classe de pares SQLite . Ele é baseado em anotações e suporta chaves primárias combinadas, restrições exclusivas combinadas e indexação.
precisa saber é o seguinte

Respostas:

111

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.

cinzento
fonte
1
O ORMLite possui suporte interno para (um | muitos) -para (muitos | um) relacionamentos? Não consigo encontrar muita informação sobre isso ... Se não, existem planos para isso?
ferdystschenko 22/02
1
Depende do que você quer dizer com "suporte". Há algum código de exemplo de como usar "objetos estranhos", como você deve usar para um para muitos e há exemplos de como usar tabelas de junção para realizar muitos para muitos ( ormlite.com/docs/examples ). Poste na lista de usuários com mais perguntas ( groups.google.com/group/ormlite-user ).
Cinza
7
Sim, é certamente maior que o ActiveAndroid. Muito mais funcionalidade, é claro. Também freeware, ao contrário da licença da AA. Mas se o tamanho é o objetivo, o ORMLite não é para você.
cinzento
4
@ Grey Ironic, já que deveria ser "Lite": P
Salman von Abbas
5
Na verdade, @SalmanPK. Embora haja vários graus de lite. :-) #
Gray
66

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:

  • Existe um artefato Maven ou Gradle? (isso é uma grande vantagem dependendo se você usa maven ou gradle, obviamente)
  • O código é acessível de uma maneira fácil, incluindo uma rápida visão geral sobre confirmações para julgar a atividade? (o código hospedado no github é uma vantagem definitiva para mim, nesse assunto)
  • Gerenciamento de liberação: existem tags e artefatos de release / release? (existem alguns que estão hospedados no github e requerem clone do git ou oferecem o tarball principal para download - para mim, muito menos se nem as tags de lançamento forem definidas e endereçadas no README)
  • como o tamanho importa, eu coloquei algumas dicas de onde era fácil obter (eu não baixei nada, portanto, nesses projetos que não oferecem artefatos de liberação, não há tamanhos)

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.

Risadinha
fonte
Eu recomendo fortemente o uso do Realm, é muito rápido e fluido para trabalhar!
Crono 21/09
39

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.

Markus Junginger
fonte
5
Parece muito bom, mas ter que gerar o Dao é uma desvantagem para mim :(
Chris.Jenkins
4
Sim, a geração de código é uma etapa adicional para os desenvolvedores, mas economiza uma grande quantidade de desempenho no aplicativo. Os resultados da inicialização e da análise do banco de dados são significativamente mais rápidos. Outras ferramentas dependem da reflexão, que é cruelmente lenta no Android.
Markus Junginger
1
Estou usando greenDao em meus projetos e estou muito satisfeito com isso.
22412 mabac
3
@greenrobot você tem alguns exemplos de "grandes aplicativos" usando sua biblioteca?
26412 StErMi
1
O caminho @StErMi está usando greenDAO. Eles têm> 1 milhão de instalações. Veja github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger
10

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 :

slf
fonte
Eu tive bons resultados com DB40 ... quero check-out Android ativo embora ...
Ben
1
activeandroid.com parece legal, estou ansioso para dar uma volta
slf 28/06
9

O ActiveAndroid (US $ 20) parece ser exatamente o que você precisa.

Michael Pardo
fonte
14
Sei que você não está tentando fazer nada de errado aqui, mas você pode divulgar sua afiliação em suas postagens quando mencionar um de seus próprios produtos no SO? Sei que seu nome está no rodapé da página vinculada, mas estamos tentando reprimir o astroturf (o que não é esse), então estamos pedindo a todos que sigam as mesmas diretrizes de divulgação. Obrigado.
Bill the Lizard
4
Apenas um alerta, o ActiveAndroid não é gratuito.
gak
7
O ActiveAndroid agora é gratuito e de código aberto - pardom.github.com/ActiveAndroid
Michael Pardo
7

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/

Tony Topper
fonte
Enquadramento legal, mas entra em conflito com biblioteca org.codehous.jackson, por isso, se você usá-lo em seu projeto, você wil ser incapaz de usar ActveAndroid
endryha
1
Como isso entra em conflito? Você reportou isso como um bug no tracker.activeandroid.com ?
Michael Pardo
Talvez dê uma olhada no androrm.the-pixelpla.net, que possui a maioria dos recursos e eu diria ainda mais. Plus: é gratuito e de código aberto.
philgiese
6

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.

Chayy
fonte
DB40 e NeoDatis são bancos de dados de objetos, apenas o tamanho delas é totalmente proibitivo para ser de qualquer uso em Android
Bostone
@ DroidIn.net você poderia fornecer um link que sustente seu comentário?
14783 Sergio
3

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/

Vladimir Kroz
fonte
Parece que ainda está em desenvolvimento, mas vale a pena ficar de olho!
GWLlosa
Tentou fazê-lo - é bom começo, mas precisa de muito trabalho para estar pronto para o horário nobre
Bostone
2

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.

David Robbins
fonte
No código Java? Ou no código JavaScript?
GWLlosa
Tenho certeza de que você está falando de uma solução Javascript destinada exclusivamente a aplicativos baseados na Web (Web). Não vejo como isso se relaciona com o desenvolvimento de aplicativos nativos para Android.
Brian Lacy
1

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.

Pavel Lahoda
fonte
Parece interessante, você já tem s.th. dar uma olhada / tentar? Cheers, Martin
MartinGrotzke
Mais de um ano depois, como está o progresso nisso? Anotações JPA + no Android parecem ótimas!
Spidey
1

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.

yanchenko
fonte
1
Pode ser uma boa ideia adicionar documentação adequada.
Subin Sebastian
0

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.

Oleksii Malovanyi
fonte