290 votes

De bons outils ORM pour le développement Android ?

Quelqu'un qui travaille sur l'Android ('gPhone') a ou connaît un endroit où je peux trouver un bon outil ORM pour celui-ci ? Le code est écrit en Java, et la base de données est SQLite. Ce que j'aimerais trouver, c'est un outil qui, à partir de la définition de l'objet, puisse générer automatiquement les tables et les fonctions CRUD (ce serait génial), ou, à défaut, un outil qui puisse prendre la définition de la table, la définition de l'objet, et générer automatiquement la fonctionnalité CRUD. Le problème est que tout cela doit se faire dans le cadre d'Android, qui a ses propres conventions sur la façon dont l'accès aux bases de données fonctionne.

0 votes

Je ne pense pas qu'il y en ait de disponibles maintenant.

2 votes

En 2014. Je me suis dit que j'allais mentionner Sprinkles ( github.com/emilsjolander/sprinkles ) puisque personne ne l'a mentionné.. 500 étoiles sur github, sur meaven central, observateurs du contenu, à vérifier.

0 votes

Nous sommes en 2015. Software Tree a récemment publié JDXA un ORM simple, puissant et flexible pour Android. Il prend en charge l'héritage, les relations un à un, un à plusieurs, plusieurs à un et plusieurs à plusieurs. Le modèle de programmation non intrusif 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 d'une 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.

112voto

Gray Points 58585

J'ai pensé ajouter mon grain de sel ici à propos de mon Paquet ORMLite .

Il s'agit d'un remplacement léger d'Hibernate qui utilise les appels de base de données natifs du système d'exploitation Android 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 disposons d'une Liste de diffusion Android pour les questions relatives à ORMLite.

1 votes

Est-ce que ORMLite a un support intégré pour les relations (one|many)-to-(many|one) ? Je n'ai pas trouvé beaucoup d'informations à ce sujet... Si ce n'est pas le cas, y a-t-il des projets en ce sens ?

1 votes

Cela dépend de ce que vous entendez par "support". Il y a des exemples de code sur la façon d'utiliser les "objets étrangers" qui vous permettent de faire du "one-to-many" et il y a des exemples sur la façon d'utiliser les tables de jonction pour faire du "many-to-many" ( ormlite.com/docs/exemples ). Postez sur la liste des utilisateurs si vous avez d'autres questions ( groups.google.com/group/ormlite-user ).

0 votes

Il a l'air bien mais la taille du bocal est supérieure à 200K contre 18K pour ActiveAndroid. Je ne colle rien dans mon application, aussi bonne soit-elle, ce qui augmente sa taille de 40%.

79voto

AlexCuse Points 9823

Ce fil de discussion pourrait vous donner des pistes à explorer : Alternatives légères à Hibernate

67voto

Risadinha Points 1254

Cette question ne peut pas vieillir mais les cadres proposés le peuvent. Voici donc d'abord une liste de ce que je trouve important dans de tels cadres, à des fins de comparaison :

  • Y a-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, avec un aperçu rapide des commits pour juger de l'activité ? (le code hébergé sur github est un plus indéniable pour moi, à cet égard)
  • Gestion des versions : existe-t-il des versions/étiquettes de version et des artefacts pour cela ? (il y en a qui sont hébergés sur github et qui nécessitent soit un clone git, soit le téléchargement de l'archive maître - pour moi, c'est un gros point négatif si même les balises de version ne sont pas définies et traitées dans le README).
  • pour ce qui est de la taille, j'ai mis quelques indices où il était facile de s'en sortir (je n'ai rien téléchargé, donc pour les projets qui n'offrent pas d'artefacts, il n'y a pas de taille)

Et voici une liste de cadres avec des notes sur les points ci-dessus. J'en ai cherché d'autres comme aBatis et Hadi mais je n'ai ajouté que ceux qui ont eu une activité après 2011.

Je n'ai essayé aucun de ces projets, mais je peux peut-être faire gagner un peu de temps aux lecteurs actuels en énumérant les projets actuellement en cours. Veuillez ajouter un commentaire si vous connaissez d'autres projets qui satisfont à certains des points ci-dessus et qui font l'objet d'un développement sérieux (sur une certaine période).

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

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

0 votes

Je recommande vivement d'utiliser Realm, c'est vraiment rapide et fluide à travailler !

39voto

greenrobot Points 2646

Si les performances et la taille du code sont importantes, consultez le site 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. Regardez le page de présentation pour les détails.

5 votes

Ça a l'air pas mal, mais le fait de devoir générer les Dao's me rebute :(

4 votes

Certes, la génération de code est une étape supplémentaire pour les développeurs, mais elle permet de gagner beaucoup de temps dans l'application. L'amorçage et l'analyse des résultats de la base de données sont nettement plus rapides. D'autres outils reposent sur la réflexion, qui est cruellement lente sous Android.

0 votes

Je pense que je me suis trompé sur ce point, après une nouvelle visite (moins fatiguée). Il a l'air plus beau que les autres, et je suis tout à fait pour la vitesse !

10voto

slf Points 15327

Je ne connais rien qui réponde exactement à votre demande, mais il existe une alternative à SQLite qui pourrait vous être utile si vos exigences en matière d'architecture sont flexibles. Cela peut valoir la peine de vérifier db4o :

0 votes

J'ai eu de bons résultats avec le DB40... je veux vérifier Active Android cependant...

1 votes

activeandroid.com Ça a l'air cool, j'ai hâte de l'essayer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X