Irgendwelche guten ORM-Tools für die Android-Entwicklung? [geschlossen]


285

Hat jemand, der an Android ('gPhone') arbeitet, einen Ort, an dem ich ein gutes ORM-Tool dafür finden kann oder weiß? Der Code ist in Java geschrieben und die Datenbank ist SQLite. Was ich gerne finden würde, ist ein Tool, das angesichts der Objektdefinition die Tabellen und die CRUD-Funktionen automatisch generieren kann (das wäre fantastisch), oder, abgesehen davon, ein Tool, das die Tabellendefinition, die Objektdefinition, übernehmen kann. und generieren Sie die CRUD-Funktionalität automatisch. Das Problem ist, dass all dies innerhalb des Android-Frameworks geschehen muss, das seine eigenen Konventionen hinsichtlich der Funktionsweise des Datenbankzugriffs hat.


Ich glaube nicht, dass es derzeit welche gibt.
Mparaz

2
Ich dachte, ich werde Sprinkles ( github.com/emilsjolander/sprinkles ) erwähnen, da es niemand erwähnt hat. 500 Sterne auf Github, auf Meaven Central, Inhaltsbeobachter, eine Überprüfung wert
AndroidGecko

Es ist 2015. Software Tree hat kürzlich JDXA veröffentlicht , ein einfaches, aber leistungsstarkes und flexibles ORM für Android. Unterstützt die Vererbung, eins zu eins, eins zu viele, viele zu eins und viele zu viele Beziehungen. Für das POJO-freundliche, nicht aufdringliche Programmiermodell von JDXA (Plain Old Java Objects) müssen Sie Ihre Java-Klassen in keiner Weise ändern: - Sie müssen Ihre Domänenklassen keiner Unterklasse unterordnen. - Sie müssen Ihren Quellcode nicht mit Anmerkungen überladen. - Keine Notwendigkeit für DAO-Klassen - Keine Erzeugung von Quellcode
Damodar Periwal

Schauen Sie sich dieses nette Tutorial zu JDXA ORM an .
Damodar Periwal

Wenn Sie einfachen natürlichen Android-Code ohne zusätzliche Bibliotheksabhängigkeiten bevorzugen, sehen Sie sich das Beispiel des SQLite-Peer-Class-Codegenerators an . Es basiert auf Anmerkungen und unterstützt kombinierte Primärschlüssel, kombinierte eindeutige Einschränkungen und Indizierung.
RookieGuy

Antworten:


111

Ich dachte, ich würde hier nur meine $ 0,02 über mein ORMLite-Paket hinzufügen .

Es ist ein leichter Ersatz für Hibernate und verwendet native Android OS-Datenbankaufrufe, um SQLite unter Android zu unterstützen. Es unterstützt auch viele andere Datenbanktypen, die JDBC auf anderen Architekturen verwenden. Wir haben eine Android-Mailingliste für ORMLite-Fragen.


1
Hat ORMLite eine integrierte Unterstützung für (eine | viele) -zu- (viele | eine) Beziehungen? Ich kann nicht viele Informationen dazu finden ... Wenn nicht, gibt es Pläne dafür?
Ferdystschenko

1
Kommt darauf an, was du mit "Support" meinst. Es gibt einen Beispielcode für die Verwendung von "Fremdobjekten", wie Sie eins zu viele verwenden, und es gibt Beispiele für die Verwendung von Verknüpfungstabellen, um viele zu viele zu erreichen ( ormlite.com/docs/examples ). Veröffentlichen Sie weitere Fragen in der Benutzerliste ( groups.google.com/group/ormlite-user ).
Grau

7
Ja, es ist sicherlich größer als ActiveAndroid. Natürlich auch viel mehr Funktionalität. Auch Freeware im Gegensatz zur AA-Lizenz. Aber wenn Größe das Ziel ist, ist ORMLite nichts für Sie.
Grau

4
@Gray Ironic, da es "Lite" sein soll: P
Salman von Abbas

5
In der Tat @SalmanPK. Obwohl es unterschiedliche Lite-Grade gibt. :-)
Grau

66

Diese Frage kann nicht altern, aber die vorgeschlagenen Rahmenbedingungen können. Hier ist zunächst eine Liste dessen, was ich in solchen Frameworks zum Vergleich für wichtig halte:

  • Gibt es ein Maven- oder Gradle-Artefakt? (Das ist natürlich ein großes Plus, je nachdem, ob Sie Maven oder Gradle verwenden.)
  • Ist der Code auf einfache Weise zugänglich, einschließlich eines schnellen Überblicks über Commits zur Beurteilung der Aktivität? (Code, der auf Github gehostet wird, ist in dieser Angelegenheit ein klares Plus für mich)
  • Release-Management: Gibt es Releases / Release-Tags und Artefakte dafür? (Es gibt einige, die auf Github gehostet werden und entweder einen Git-Klon erfordern oder den Master-Tarball zum Download anbieten - für mich ein großes Minus, wenn nicht einmal Release-Tags in der README-Datei festgelegt und adressiert sind.)
  • In Bezug auf die Größe habe ich einige Hinweise gegeben, wo es leicht zu bekommen war (ich habe nichts heruntergeladen, daher gibt es bei Projekten, die keine Release-Artefakte bieten, keine Größen).

Und hier ist eine Liste von Frameworks mit Hinweisen zu den obigen Punkten. Ich habe mehr nach aBatis und Hadi gesucht, aber nur diejenigen hinzugefügt, die nach 2011 etwas Aktivität hatten.

Ich habe keines davon ausprobiert, aber vielleicht kann ich aktuellen Lesern etwas Zeit sparen, indem ich die heutzutage aktiven Projekte aufführe. Bitte fügen Sie einen Kommentar hinzu, wenn Sie andere Projekte kennen, die einige der oben genannten Punkte erfüllen und sich (im Laufe der Zeit) ernsthaft weiterentwickeln.

EDIT (2013 Nov): Die Liste wurde auf den aktuellen Status der Projekte aktualisiert. Einige von ihnen haben ihren Github-Repos Release-Tags sowie Maven / Gradle-Unterstützung hinzugefügt. Gute Arbeit!

EDIT (2015 Apr): Die Liste wurde aktualisiert, Sprinkles (gemäß Kommentar von @AndroidGecko) und Realm.io hinzugefügt.


Ich empfehle dringend, Realm zu verwenden, es ist sehr schnell und flüssig zu arbeiten!
Crono

39

Wenn Leistung und Codegröße eine Rolle spielen, lesen Sie greenDAO . Ich bin der Autor davon und meine Motivation, ein anderes ORM zu erstellen, bestand darin, Reflexionen in den Hotspots zu vermeiden. Es stellte sich heraus, dass greenDAO bis zu viermal schneller sein kann als ORMLite. Kasse der Feature - Seite für Details.


5
Sieht ganz gut aus, aber die Daos generieren zu müssen, ist für mich eine Abzweigung :(
Chris.Jenkins

4
Ja, das Generieren von Code ist ein zusätzlicher Schritt für Entwickler, spart Ihnen jedoch viel Leistung in der App. Sowohl die Bootstrapping- als auch die Parsing-Datenbankergebnisse sind erheblich schneller. Andere Tools basieren auf Reflexion, die in Android grausam langsam ist.
Markus Junginger

1
Ich verwende greenDao in meinen Projekten und bin sehr zufrieden damit.
Mabac

3
@greenrobot hast du einige Vitrinen von "großen Apps" mit deiner Bibliothek?
StErMi

1
@StErMi Path verwendet greenDAO. Sie haben> 1 M installiert. Siehe github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger

10

Ich weiß nichts, wonach Sie genau fragen, aber es gibt eine Alternative zu SQLite, die Sie möglicherweise nützlich finden, wenn Ihre Architekturanforderungen flexibel sind. Es kann sich lohnen, db4o zu besuchen :


Ich hatte gute Ergebnisse mit DB40 ... möchte aber Active Android auschecken ...
Ben

1
activeandroid.com sieht cool aus, ich freue mich darauf, es zu drehen
slf

9

ActiveAndroid (20 US-Dollar) scheint genau das zu sein, was Sie brauchen.


14
Ich weiß, dass Sie hier nichts Ungewöhnliches versuchen, aber können Sie bitte Ihre Zugehörigkeit in Ihren Posts offenlegen, wenn Sie eines Ihrer eigenen Produkte auf SO erwähnen? Ich weiß, dass Ihr Name in der Fußzeile der verlinkten Seite steht, aber wir versuchen, gegen Astroturfing vorzugehen (was dies nicht ist). Deshalb bitten wir alle, die gleichen Offenlegungsrichtlinien zu befolgen. Vielen Dank.
Bill the Lizard

4
ActiveAndroid ist nicht kostenlos.
Gak

7
ActiveAndroid ist jetzt kostenlos und Open Source - pardom.github.com/ActiveAndroid
Michael Pardo

7

Ich mochte ActiveAndroid. Es ist speziell für Android geschrieben, wie es scheint. Das fühlt sich für mich wie ein Plus an.

Ich habe einige Erfahrungen mit Ruby on Rails und wenn Sie die Rails-Methode von ActiveRecord mögen, können Sie mit dieser Bibliothek sehr schnell loslegen.

https://www.activeandroid.com/


Nettes Framework, aber es steht in Konflikt mit der Bibliothek org.codehous.jackson. Wenn Sie es also in Ihrem Projekt verwenden, können Sie ActveAndroid
endryha am

1
Wie widerspricht es? Haben Sie es als Fehler in tracker.activeandroid.com gemeldet ?
Michael Pardo

Vielleicht schauen Sie sich androrm.the-pixelpla.net an, es hat die meisten Funktionen und ich würde noch mehr sagen. Plus: Es ist kostenlos und Open Source.
Philgiese


6

Ich suche auch nach einem ORM für Android. Ich habe ActiveAndroid , NeoDatis und db4o getestet und denke, dass ich einen der beiden letzten verwenden werde.

NeoDatis und db4o sind sich sehr ähnlich, daher möchte ich einige Ratschläge zur Auswahl des besten. Verwendet jemand einen von ihnen für sein Projekt? Ich werde es für eine kostenlose und kostenpflichtige App verwenden, aber es scheint, dass die beiden keine Lizenzbeschränkung für Android haben.

Es ist ein Benchmark hier , die zu sagen scheint , dass NeoDatis ist schneller als db4o, aber ich weiß nicht , ob wir meiner Meinung nach auf diese stützen kann.


Db40 und NeoDatis sind Objektdatenbanken. Nur die Größe dieser Datenbanken ist für Android
Bostone am

@ DroidIn.net könnten Sie einen Link bereitstellen, der Ihren Kommentar unterstützt?
Sergio

3

Ein weiterer Neuling: Android-Active-Record. Es ist ein sehr leichtes und benutzerfreundliches Persistenz-Framework für Android, das von SQLite unterstützt wird. Http://code.google.com/p/android-active-record/


Sieht so aus, als ob es sich noch in der frühen Entwicklung befindet, aber es lohnt sich, ein Auge darauf zu werfen!
GWLlosa

Versuchte es - es ist ein schöner Anfang, aber es braucht viel Arbeit, um für die Hauptsendezeit bereit zu sein
Bostone

2

ActiveRecordJS von Aptana ist ein Javascript ORM , die auf dem gPhone laufen soll. Es wurde für die Verwendung mit Jaxer und Gears entwickelt. Wenn Sie die Jaxer-Adapter verwenden, können Sie eine Verbindung zu SQLLite herstellen.

UPDATE: Ich glaube nicht, dass ich es klargestellt habe, aber ActiveRecordJS ist ein ORM, das clientseitig ausgeführt wird, was für Sie auf dem gPhone von Vorteil sein könnte.


In Java-Code? Oder in JavaScript-Code?
GWLlosa

Ich bin mir ziemlich sicher, dass es sich um eine Javascript-Lösung handelt, die ausschließlich für browserbasierte (Web-) Anwendungen gedacht ist. Ich sehe nicht, wie es mit der nativen App-Entwicklung für Android zusammenhängt.
Brian Lacy


1

Ich habe meine eigene Implementierung des JPA ORM für Android entwickelt. Die Funktion ist noch nicht vollständig abgeschlossen. Sie können die Klasse jedoch mit den Annotationen @Entity, @Id, @Column versehen und JPA-Entitäten erhalten, die gespeichert und aus der SQLite-Datenbank abgerufen werden können. Es braucht einige weitere Funktionen und Aufräumarbeiten, bevor ich es der Öffentlichkeit zur Verfügung stelle. Wenn jedoch genügend Interesse besteht, kann dies meine Bemühungen beschleunigen.


Klingt interessant, hast du schon s.th. anschauen / versuchen? Prost, Martin
MartinGrotzke

Wie ist der Fortschritt mehr als ein Jahr später? JPA + Annotations auf Android klingt großartig!
Spidey



0

Hatte negative Erfahrungen mit db4o (v. 8): Die Indizierung funktionierte nicht richtig (Ausnahme usw.). Ich habe es also nicht geschafft, das Erstellen von Duplikaten in fremden Tabellen zu vermeiden, wenn sich ein Objekt in einer Objektstruktur befindet. Detailliertere Erklärung in meiner Frage . Hoffe eines Tages wäre es besser.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.