Ha senso utilizzare ORM nello sviluppo Android?

27

Ha senso utilizzare un ORM nello sviluppo Android o il framework è ottimizzato per un accoppiamento più stretto tra l'interfaccia utente e il livello DB?

Sfondo : ho appena iniziato con lo sviluppo di Android e il mio primo istinto (proveniente da uno sfondo .net) è stato quello di cercare un piccolo strumento di mappatura relazionale e altri strumenti che aiutino a ridurre lo standard clodo (ad es. POJOs + OrmLite + Lombok ).

Tuttavia, mentre sviluppavo la mia prima applicazione giocattolo, mi sono imbattuto in una classe UI che richiede esplicitamente un cursore del database: AlphabetIndexer . Questo mi ha fatto domandare se forse la libreria Android non è adatta per un rigoroso disaccoppiamento di UI e DB layer e che mi mancheranno molte utili funzionalità per risparmiare tempo se cerco di utilizzare POJO ovunque (invece dell'accesso diretto al database) ).

Chiarimento : sono abbastanza consapevole dei vantaggi dell'uso di in generale di ORM, sono specificamente interessato a quanto bene la libreria di classi Android funzioni con esso.

    
posta Heinzi 09.07.2012 - 18:57
fonte

2 risposte

20

Android non suona così bene con altri framework che potrebbe. Il suo stile di sviluppo consigliato presuppone che tu crei tutto dalla sua API, senza altre librerie. Lo strato UI è strettamente legato al modello. Questo stile è ideale per scrivere app più piccole e modulari, non per applicazioni complesse.

Hai bisogno di riflettere se vuoi o meno le funzionalità di Android; se non ne hai bisogno, non hai nulla da perdere usando un ORM. Se questo non è il caso, potrebbe essere necessario accontentarsi di un ibrido. Usa un ORM per tutto quello che puoi, ma dai a te stesso i ganci su Cursor s e qualsiasi altro oggetto di basso livello che ti serve. Se l'ORM che scegli richiede DAO (non ho familiarità con quello che hai menzionato), allora questo strato è probabilmente il posto migliore per loro.

In alternativa, potrebbe essere necessario non utilizzare alcun ORM esterno. Se le tue esigenze sono semplici, puoi scrivere un semplice livello di accesso ai dati che le soddisfi. La maggior parte dei requisiti del database delle app non è eccezionale. Se hai solo un paio di tavoli, scrivi semplicemente un paio di classi di accesso e gli oggetti del modello e chiamalo bene.

YAGNI e KISS sono le parole chiave per il successo qui. Ti suggerisco di passare qualche giorno di prototipazione. Non aver paura di buttare via le semplici app di test. Prova tutte le tue idee da solo, quindi decidi se alcune o tutte funzioneranno per il tuo progetto.

    
risposta data 09.07.2012 - 19:30
fonte
6

Dipende da cosa fai con il tuo modello di dati. Se hai un codice esistente che manipola un modello orientato agli oggetti e se vuoi mantenere quegli oggetti in un database SQLite, hai bisogno di un orm.

Se stai scrivendo un nuovo codice Android da zero, eviterei un modello di dati in memoria a meno che l'app non esegua manipolazioni OO davvero complesse, come potrebbe accadere ad esempio per un programma CAD. Ma, per la maggior parte dei programmi, mantieni il modello dei dati nel database e lascia che la catena di oggetti Cursore, Adattatore e Vista faccia molto lavoro pesante per te.

    
risposta data 09.10.2012 - 00:09
fonte

Leggi altre domande sui tag