Ist es sinnvoll, ORM in der Android-Entwicklung zu verwenden?

27

Ist es sinnvoll, ein ORM in der Android-Entwicklung zu verwenden, oder ist das Framework für eine engere Kopplung zwischen der Benutzeroberfläche und der DB-Ebene optimiert?


Hintergrund : Ich habe gerade mit der Android-Entwicklung begonnen, und mein erster Instinkt (von einem .net-Hintergrund kommend) bestand darin, nach einem kleinen objektrelationalen Mapper und anderen Tools zu suchen, die dazu beitragen, Boilerplate-Clode zu reduzieren (z. B. POJOs + OrmLite + Lombok ).

Doch während mein erstes Spielzeug Anwendung entwickeln stieß ich auf eine UI - Klasse , die explizit einen Datenbank - Cursor erfordert: AlphabetIndexer. Das hat mich gefragt, ob die Android-Bibliothek möglicherweise nicht für eine strikte Entkopplung von Benutzeroberfläche und Datenbank geeignet ist und ich viele nützliche, zeitsparende Funktionen verpassen werde, wenn ich versuche, POJOs überall zu verwenden (anstelle des direkten Datenbankzugriffs) ).


Klarstellung : Ich bin mir der Vorteile der Verwendung von ORM im Allgemeinen sehr bewusst und bin insbesondere daran interessiert, wie gut die Android-Klassenbibliothek damit zusammenarbeitet.

Heinzi
quelle

Antworten:

20

Android spielt nicht so gut mit anderen Frameworks wie es könnte. Der empfohlene Entwicklungsstil setzt voraus, dass Sie alles über die API ohne andere Bibliotheken erstellen. Die UI-Ebene ist sehr eng an das Modell gekoppelt. Dieser Stil eignet sich ideal zum Schreiben kleinerer, modularer Apps, nicht für komplexe Anwendungen.

Sie müssen überlegen, ob Sie die Funktionalität von Android nutzen möchten. Wenn Sie es nicht benötigen, haben Sie mit einem ORM nichts zu verlieren. Ist dies nicht der Fall, müssen Sie sich möglicherweise mit einem Hybrid zufrieden geben. Verwenden Sie für alles, was Sie können, ein ORM, aber geben Sie sich den Haken an Cursors und allen anderen Objekten auf niedriger Ebene, die Sie benötigen. Wenn für den von Ihnen ausgewählten ORM DAOs erforderlich sind (ich kenne den von Ihnen erwähnten nicht), ist diese Ebene wahrscheinlich der beste Ort für sie.

Alternativ müssen Sie möglicherweise überhaupt kein externes ORM verwenden. Wenn Ihre Anforderungen einfach sind, können Sie eine einfache Datenzugriffsebene erstellen, die diese Anforderungen erfüllt. Die meisten Datenbankanforderungen für Apps sind nicht besonders hoch. Wenn Sie nur ein paar Tabellen haben, schreiben Sie einfach ein paar Zugriffsklassen und die Modellobjekte und nennen Sie es gut.

YAGNI und KISS sind hier die Schlüsselwörter zum Erfolg. Ich schlage vor, Sie verbringen ein paar Tage mit dem Prototyping. Haben Sie keine Angst, die einfachen Test-Apps wegzuwerfen. Probieren Sie alle Ihre Ideen aus und entscheiden Sie dann, ob einige oder alle für Ihr Projekt geeignet sind.

Michael K
quelle
6

Dies hängt davon ab, was Sie mit Ihrem Datenmodell tun. Wenn Sie über vorhandenen Code verfügen, der ein objektorientiertes Modell manipuliert, und wenn Sie diese Objekte in einer SQLite-Datenbank beibehalten möchten, benötigen Sie ein Orm.

Wenn Sie neuen Android-Code von Grund auf neu schreiben, würde ich ein In-Memory-Datenmodell vermeiden, es sei denn, die App führt wirklich komplexe OO-Manipulationen durch, wie dies beispielsweise ein CAD-Programm könnte. Behalten Sie für die meisten Programme das Datenmodell in der Datenbank bei, und lassen Sie die Kette der Cursor-, Adapter- und Ansichtsobjekte für Sie sehr anstrengend werden.

Zigurd
quelle