web-dev-qa-db-fra.com

Tous les bons outils ORM pour Android développement?)

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

282
GWLlosa

Je pensais que je viens d'ajouter mon 0,02 $ ici sur mon paquet ORMLite .

C'est un substitut léger à Hibernate et utilise des appels natifs Android base de données OS 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 un Android liste de diffusion pour les questions ORMLite.

111
Gray

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 tu utilises maven ou gradle, évidemment)
  • Le code est-il facilement accessible, y compris un aperçu rapide des engagements pour juger de l'activité? (le code hébergé sur github est un avantage certain pour moi, en l'occurrence)
  • Gestion des versions: existe-t-il des balises et des artefacts de version/version? (Certains d'entre eux sont hébergés sur github et requièrent soit un clone de git, soit l'offre de l'archive principale pour le téléchargement - pour moi un inconvénient majeur, voire même les balises de publication sont définies et adressées dans le fichier README)
  • comme la taille compte, j’ai mis en place des astuces où il était facile de s’en sortir (je n’ai rien téléchargé, donc parmi les projets qui ne proposent pas d’artefacts de sortie, il n’ya pas de taille)

Et voici une liste de cadres avec des notes sur les points ci-dessus. Je levai les yeux un peu plus comme aBatis et Hadi mais j’ajoutai seulement ceux qui avaient un peu d’activité après 2011.

Je n’ai essayé aucune de ces solutions, mais je pourrais peut-être épargner un peu de temps aux lecteurs actuels en énumérant les projets actuellement actifs. Veuillez ajouter un commentaire si vous connaissez d’autres projets qui répondent à certains des points ci-dessus et qui connaissent un développement sérieux (au fil du temps).

EDIT (novembre 2013): mise à jour de la liste avec l'état actuel des projets. Certains d'entre eux ont ajouté des étiquettes 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.

66
Risadinha

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

39
Markus Junginger

Je ne sais rien de ce qui est exactement ce que vous demandez, mais il existe une alternative à SQLite qui pourrait vous être utile si les exigences de votre architecture sont flexibles. Il peut être intéressant de consulter db4o :

10
slf

ActiveAndroid (20 $) on dirait que c'est peut-être exactement ce dont vous avez besoin.

9
Michael Pardo

J'ai aimé ActiveAndroid. Il est écrit spécialement pour Android semble-t-il. Cela me semble être un plus.

J'ai un peu d'expérience Ruby sur Rails et si vous aimez le moyen Rails d'ActiveRecord, vous pouvez vous déplacer rapidement cette bibliothèque.

https://www.activeandroid.com/

7
Tony Topper

https://github.com/ahmetalpbalkan/orman

Le framework Orman pourrait vous aider. Il est spécialement conçu pour cela et très petit et utile.

6
AhmetB - Google

Je cherche aussi un ORM sur Android. J'ai testé ActiveAndroid , NeoDatis et db4o , et je pense que je vais utiliser l'un des deux derniers.

NeoDatis et db4o sont vraiment similaires, donc j'aimerais quelques conseils pour choisir le meilleur. Est-ce que quelqu'un en utilise un sur son projet? Je vais l'utiliser gratuitement et avec une application payante, mais il semble que les deux n'ont aucune limite de licence pour Android.

Il y a un repère ici qui semble dire que NeoDatis est plus rapide que db4o, mais je ne sais pas si nous pouvons baser mon opinion sur cela.

6
Chayy

Encore un nouveau venu: Android-active-record. Cadre de persistance très léger et facile à utiliser pour Android soutenu par SQLite http://code.google.com/p/Android-active-record/

3
Vladimir Kroz

http://hadi.sourceforge.net

Cet outil est très simple et facile à utiliser.

2
9tcat

ActiveRecordJS de 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.

UPDATE: 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.

2
David Robbins

Même s'il s'agit d'un ancien message, le sujet est toujours d'actualité. Par conséquent, je souhaite partager un article intéressant et une approche de Nice pour résoudre la plupart des problèmes mentionnés dans la question:

http://blog.codecentric.de/fr/2011/04/Android-persistence-accelerated-small-inhouse-orm/

J'espère que quelqu'un trouvera cela aussi utile que moi!

1
Sgali

Mon propre DroidParts /http://droidparts.org/ vient d'atteindre la v0.5. C'est une bibliothèque DI/ORM et plus.
Pas beaucoup de documentation, mais comprend un exemple d'application.

1
yanchenko

J'ai développé ma propre implémentation de JPA ORM pour Android. Les fonctionnalités ne sont pas encore complètes, mais vous pouvez annoter une classe avec les annotations @Entity, @Id, @Column et obtenir des entités JPA pouvant être stockées et extraites de la base de données SQLite. Il a besoin de plus de fonctionnalités et de nettoyage avant que je puisse le publier au public, mais si l'intérêt est suffisant, cela pourrait accélérer mes efforts.

1
Pavel Lahoda

Expérience négative avec db4o (v. 8): l'indexation ne fonctionnait pas correctement (exception, etc.). Je n'ai donc pas réussi à éviter de créer des doublons dans des tables étrangères lorsque l'objet est dans la structure d'objet. Explication plus détaillée dans mon question . J'espère qu'un jour ça ira mieux.

0
Aleksey Malevaniy