De bons outils ORM pour le développement Android? [fermé]


285

Toute personne travaillant sur Android ('gPhone') a ou connaît un endroit où je peux trouver un bon outil ORM pour cela? Le code est écrit en Java et la base de données est SQLite. Ce que je voudrais trouver, c'est un outil qui, compte tenu de la définition de l'objet, peut générer automatiquement les tables et les fonctions CRUD (ce serait génial), ou, sauf cela, un outil qui peut prendre la définition de la table, la définition de l'objet, et générer automatiquement la fonctionnalité CRUD. Le hic, c'est que tout cela doit se produire dans le cadre Android, qui a ses propres conventions sur le fonctionnement de l'accès à la base de données.


Je ne pense pas qu'il en existe actuellement.
mparaz

2
son 2014. Je pensais que je mentionnerai Sprinkles ( github.com/emilsjolander/sprinkles ) puisque personne ne l'a mentionné .. 500 étoiles sur github, sur meaven central, observateurs de contenu, à vérifier
AndroidGecko

Nous sommes en 2015. L'arborescence des logiciels a récemment publié JDXA , un ORM simple mais puissant et flexible pour Android. Prend en charge l'héritage, un à un, un à plusieurs, plusieurs à un et plusieurs à plusieurs relations. Le modèle de programmation non intrusif convivial POJO (Plain Old Java Objects) de JDXA ne vous oblige pas à modifier vos classes Java de quelque manière que ce soit: - Pas besoin de sous-classer vos classes de domaine à partir de n'importe quelle classe de base - Pas besoin d'encombrer votre code source avec des annotations - Pas besoin de classes DAO - Pas de génération de code source
Damodar Periwal

Découvrez ce joli tutoriel sur JDXA ORM .
Damodar Periwal

Si vous préférez du code Android naturel simple sans dépendances de bibliothèque supplémentaires, jetez un œil à l' exemple de générateur de code de classe de pairs SQLite . Il est basé sur des annotations et prend en charge les clés primaires combinées, les contraintes uniques combinées et l'indexation.
RookieGuy

Réponses:


111

Je pensais simplement ajouter mes 0,02 $ ici à propos de mon package ORMLite .

Il s'agit d'un remplacement léger d'Hibernate et utilise des appels de base de données Android OS natifs pour prendre en charge SQLite sur Android. Il prend également en charge de nombreux autres types de bases de données utilisant JDBC sur d'autres architectures. Nous avons une liste de diffusion Android pour les questions ORMLite.


1
ORMLite prend-il en charge les relations (un | plusieurs) -to- (plusieurs | un)? Je ne trouve pas beaucoup d'informations là-dessus ... Sinon, y a-t-il des plans pour cela?
ferdystschenko

1
Cela dépend de ce que vous entendez par «soutien». Il existe des exemples de code sur la façon d'utiliser des "objets étrangers", qui vous permettent de créer un à plusieurs, et il existe des exemples sur la façon d'utiliser des tables de jointure pour effectuer plusieurs à plusieurs ( ormlite.com/docs/examples ). Publiez dans la liste des utilisateurs avec plus de questions ( groups.google.com/group/ormlite-user ).
Gray

7
Oui, il est certainement plus grand qu'ActiveAndroid. Bien sûr, beaucoup plus de fonctionnalités. Aussi freeware par opposition à la licence AA. Mais si la taille est l'objectif, ORMLite n'est pas pour vous.
Gray

4
@Gray Ironic car il est censé être "Lite": P
Salman von Abbas

5
En effet @SalmanPK. Bien qu'il existe différents degrés de lumière. :-)
Gray

66

Cette question ne peut pas vieillir mais les cadres suggérés le peuvent. Donc, voici d'abord une liste de ce que je trouve important dans de tels cadres de comparaison:

  • Existe-t-il un artefact Maven ou Gradle? (c'est un gros plus selon que vous utilisez maven ou gradle, évidemment)
  • Le code est-il accessible de manière simple, y compris un aperçu rapide des validations pour juger de l'activité? (le code hébergé sur github est un avantage certain pour moi, dans ce domaine)
  • Gestion des versions: existe-t-il des versions / balises de version et des artefacts? (il y en a qui sont hébergés sur github et nécessitent soit un clone git, soit un tarball maître à télécharger - pour moi, un gros inconvénient sinon des balises de version sont définies et traitées dans le fichier README)
  • en ce qui concerne la taille, j'ai mis en place des indices où il était facile de s'en sortir (je n'ai rien téléchargé, donc à partir de ces projets qui n'offrent aucun artefact de version, il n'y a pas de tailles)

Et voici une liste de cadres avec des notes sur les points ci-dessus. J'ai cherché un peu plus comme aBatis et Hadi mais j'ai ajouté seulement ceux qui avaient une activité après 2011.

Je n'ai essayé aucun de ceux-ci mais peut-être pourrais-je épargner un peu de temps aux lecteurs actuels en énumérant les projets actifs de nos jours. Veuillez ajouter un commentaire si vous connaissez d'autres projets qui satisfont certains des points ci-dessus et ont un développement sérieux (sur une certaine période) en cours.

EDIT (2013 Nov): mise à jour de la liste à l'état actuel des projets. Certains d'entre eux ont ajouté des balises de version à leurs dépôts github ainsi que le support Maven / Gradle. Bon travail!

EDIT (2015 Apr): mise à jour de la liste, ajout de Sprinkles (selon le commentaire de @AndroidGecko) et Realm.io.


Je recommande fortement d'utiliser Realm, c'est vraiment rapide et fluide pour travailler!
Crono

39

Si les performances et la taille du code sont importantes, consultez greenDAO . J'en suis l'auteur, et ma motivation pour créer un autre ORM était d'éviter la réflexion dans les hotspots. Il s'est avéré que greenDAO peut être jusqu'à 4 fois plus rapide que ORMLite. Consultez la page des fonctionnalités pour plus de détails.


5
Semble assez bon, mais avoir à générer le Dao est un blocage pour moi :(
Chris.Jenkins

4
Oui, la génération de code est une étape supplémentaire pour les développeurs, mais elle vous permet d'économiser beaucoup de performances dans l'application. Les résultats de la base de données d'amorçage et d'analyse sont beaucoup plus rapides. D'autres outils reposent sur la réflexion, qui est cruellement lente sur Android.
Markus Junginger

1
J'utilise greenDao dans mes projets et j'en suis très satisfait.
mabac

3
@greenrobot avez-vous des vitrines de "grandes applications" en utilisant votre lib?
StErMi

1
@StErMi Path utilise greenDAO. Ils ont> 1 M d'installations. Voir github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger

10

Je ne sais pas quoi que ce soit exactement ce que vous demandez, mais il existe une alternative à SQLite que vous pouvez trouver utile si vos exigences d'architecture sont flexibles. Il peut être utile de consulter db4o :


j'ai eu de bons résultats avec DB40 ... je veux commander Active Android cependant ...
Ben

1
activeandroid.com a l' air cool, j'ai hâte de lui donner un spin
slf

9

ActiveAndroid (20 $) semble être exactement ce dont vous avez besoin.


14
Je sais que vous n'essayez rien de sournois ici, mais pouvez-vous s'il vous plaît divulguer votre affiliation dans vos messages lorsque vous mentionnez l'un de vos propres produits sur SO? Je sais que votre nom est dans le pied de page de la page liée, mais nous essayons de sévir contre l' astroturfing (ce qui n'est pas le cas), nous demandons donc à tout le monde de suivre les mêmes directives de divulgation. Merci.
Bill the Lizard

4
Attention, ActiveAndroid n'est pas gratuit.
gak

7
ActiveAndroid est maintenant gratuit et open-source - pardom.github.com/ActiveAndroid
Michael Pardo

7

J'ai aimé ActiveAndroid. Il est écrit spécifiquement pour Android, semble-t-il. C'est comme un plus pour moi.

J'ai une certaine expérience Ruby on Rails et si vous aimez la méthode Rails d'ActiveRecord, vous pouvez très rapidement vous déplacer avec cette bibliothèque.

https://www.activeandroid.com/


Beau cadre, mais il entre en conflit avec la bibliothèque org.codehous.jackson, donc si vous l'utilisez dans votre projet, vous ne pourrez pas utiliser ActveAndroid
endryha

1
Comment est-ce en conflit? L'avez-vous signalé comme bogue dans tracker.activeandroid.com ?
Michael Pardo

Peut-être jetez un oeil à androrm.the-pixelpla.net il a la plupart des fonctionnalités et je dirais même plus. Le plus: c'est gratuit et open source.
philgiese


6

Je recherche également un ORM sur Android. J'ai testé ActiveAndroid , NeoDatis et db4o , et je pense que j'utiliserai l'un des deux derniers.

NeoDatis et db4o sont vraiment similaires, je voudrais donc quelques conseils pour choisir le meilleur. Est-ce que quelqu'un utilise l'un d'eux sur son projet? Je vais l'utiliser pour une application gratuite et payante, mais il semble que les deux n'ont aucune limitation de licence pour Android.

Il y a ici une référence qui semble dire que NeoDatis est plus rapide que db4o, mais je ne sais pas si nous pouvons baser mon opinion sur cela.


Db40 et NeoDatis sont des bases de données d'objets, leur taille est totalement prohibitive pour être d'aucune utilité sur Android
Bostone

@ DroidIn.net pourriez-vous fournir un lien qui soutient votre commentaire?
Sergio

3

Un nouveau venu: android-active-record. C'est un framework de persistance très léger et facile à utiliser pour Android soutenu par SQLite http://code.google.com/p/android-active-record/


Il semble que ce soit encore au début du développement, mais cela vaut la peine de garder un œil!
GWLlosa

J'ai essayé - c'est un bon début mais a besoin de beaucoup de travail pour être prêt pour les heures de grande écoute
Bostone

2

ActiveRecordJS d'Aptana est un ORM Javascript qui devrait fonctionner sur le gPhone. Il est conçu pour fonctionner avec Jaxer et Gears. Lorsque vous utilisez les adaptateurs Jaxer, vous pouvez vous connecter à SQLLite.

MISE À JOUR: Je ne pense pas avoir été clair, mais ActiveRecordJS est un ORM qui fonctionne côté client, ce qui pourrait être un avantage pour vous sur le gPhone.


En code Java? Ou en code JavaScript?
GWLlosa

Je suis sûr que ce dont vous parlez est une solution Javascript destinée uniquement aux applications basées sur un navigateur (Web). Je ne vois pas comment cela se rapporte au développement d'applications natives pour Android.
Brian Lacy


1

J'ai développé ma propre implémentation de JPA ORM pour Android. Il n'est pas encore complet, mais vous pouvez annoter la classe avec les annotations @Entity, @Id, @Column et vous obtenez des entités JPA qui peuvent être stockées et récupérées à partir de la base de données SQLite. Il a besoin de plus de fonctionnalités et de nettoyage avant de le publier, mais s'il y a suffisamment d'intérêt, cela pourrait accélérer mes efforts.


Cela semble intéressant, avez-vous déjà le s.th. voir / essayer? Santé, Martin
MartinGrotzke

Plus d'un an plus tard, comment progresse-t-on à ce sujet? JPA + Annotations sur Android sonne bien!
Spidey



0

A eu une expérience négative avec db4o (v. 8): l'indexation n'a pas fonctionné correctement (exception, etc.). Donc, je n'ai pas réussi à éviter de créer des doublons dans des tables étrangères lorsque j'ai un objet dans la structure de l'objet. Explication plus détaillée dans ma question . J'espère qu'un jour ce serait mieux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.