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.


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


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.


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.


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.


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


9

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


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/


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.


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


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.


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.


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



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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.