Se stai sviluppando app android, prima o poi dovrai salvare i dati da qualche parte. Puoi scegliere se salvare i dati in un server esterno oppure utilizzare il database SQLite interno al dispositivo. In questo caso devi decidere se scrivere le query SQL utilizzando un Content Provider oppure usare un ORM. Se opti per quest’ultimo allora può essere utile sapere quali sono i 5 migliori ORM android.
5 migliori ORM Android
In questo articolo cercherò di farti una panoramica generale su 5 migliori ORM android senza scendere troppo nel dettaglio. La scelta dell’ORM giusto dipende infatti da molti fattori molti dei quali soggettivi, pertanto non farò una classifica ma mi limiterò a fornirti un elenco degli ORM utilizzabili per lo sviluppo Java di app per Android. Iniziamo subito…
1. OrmLite
Il primo non è un ORM specifico per android bensì un ORM per Java con un ampio supporto ai database relazionali. Può essere usato in qualsiasi contesto di sviluppo dove si usa Java quindi anche Android. Fa molto uso delle annotazioni come ad esempio @DatabaseTable per ogni classe che definisce una tabella o @DatabaseField per ogni campo in una classe.
Un semplice esempio dell’utilizzo di ORMLite per definire una tabella è un codice del tipo:
@DatabaseTable(tableName = "utenti") public class Utente { @DatabaseField(id = true) private String username; @DatabaseField private String password; public Utente() { // ORMLite non necessita di argomenti per il suo costruttore } public Utente(String username, String password) { this.username = username; this.password = password; } // Implementazione dei metodi getter e setter public String getUserame() { return this.username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } }
OrmLite per Android è open source lo puoi trovare su GitHub. Per informazioni più dettagliate puoi leggere la documentazione ufficiale.
2. SugarORM
SugarORM è un ORM sviluppato specificamente per Android. E’ fornito con una API semplice da imparare e semplice da ricordare. Crea in autonomia le tabelle necessarie nel database fornendo metodi semplici per creare relazioni Uno-a-Uno e Uno-a-Molti. Semplifica la CRUD con l’utilizzo di solo 3 funzioni, save(), delete() e find() (o findById()).
La configurazione della tua app per usare SugarORM è semplice e consiste nell’aggiungere questi 4 meta-data al file AndroidManifest.xml:
<meta-data android:name="DATABASE" android:value="mio_database.db" /> <meta-data android:name="VERSION" android:value="1" /> <meta-data android:name="QUERY_LOG" android:value="true" /> <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.mio-dominio" />
Ora puoi usare l’ORM usando le sue classi come superclassi per gli oggetti che voi salvare nel database:
public class User extends SugarRecord<User> { String username; String password; int age; @Ignore String bio; //questo verrà ignorato da SugarORM public User() { } public User(String username, String password,int age){ this.username = username; this.password = password; this.age = age; } }
Quindi per aggiungere un nuovo utente il codice è:
User johndoe = new User(getContext(),"john.doe","secret",19); johndoe.save(); //stores the new user into the database
La cancellazione di tutti gli utenti di 19 anni sarà:
List<User> nineteens = User.find(User.class,"age = ?",new int[]{19}); foreach(user in nineteens) { user.delete(); }
Per maggiori informazioni su SugarORM puoi leggere la documentazione online.
3. GreenDAO
Dai test che trovo online GreenDAO è il più veloce e performante quindi è sicuramente uno dei 5 migliori ORM Android. Da quanto dichiarato nel sito ufficiale può inserire, modificare, e prelevare diverse centinaia di elementi al secondo. Stando a questi dati è 4 volte più veloce di OrmLite.
Parlando di dimensioni, GreenDAO è più piccolo di 100kb, pertanto non appesantisce molto l’APK della tua applicazione.
E’ disponibile anche un tutorial che spiega come utilizzarlo in Android Studio. Puoi scaricare i sorgenti su GitHub, e leggere la documentazione ufficiale.
4. Active Android
Come tutti gli ORM anche ActiveAndroid permette di salvare e recuperare record da SQLite senza scrivere una sola query SQL.
Per includere ActiveAndroid nel tuo progetto ti basta aggiungere un file JARnella cartella /libs del tuo progetto. Come descritto nella Getting started guide, puoi clonare il codice sorgente da GitHub e compilarlo con Maven. Dopo averlo incluso devi aggiungere questi tag meta-data al file AndroidManifest.xml della tua app:
<meta-data android:name="AA_DB_NAME" android:value="my_database.db" /> <meta-data android:name="AA_DB_VERSION" android:value="1" />
dopodiché puoi invocare ActiveAndroid.initialize() nella tua activity in questo modo:
public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActiveAndroid.initialize(this); //resto della app } }
Ora che la tua app è configurata per usare ActiveAndroid, puoi creare modelli come classi Java utilizzando le annotazioni:
@Table(name = "UTENTI") public class User extends Model { @Column(name = "username") public String username; @Column(name = "password") public String password; public User() { super(); } public User(String username,String password) { super(); this.username = username; this.password = password; } }
Questo è un esempio semplice dell’utilizzo di ActiveAndroid. La documentazione è molto dettagliata e ti permette di approfondire ogni aspetto e funzionalità di questo potente ORM
5. ORMDroid
L’ultimo ORM che va a concludere la panoramica sui 5 migliori ORM Android è ORMDroid, che è un altro framework di persistenza di oggetti per applicazioni Android. E’ in assoluto il più piccolo poiché occupa appena 30kb. E’ semplice, flessibile e dispone di molti automatismi che lo rendono molto produttivo. E’ specifico per Andoroid e la comunità di sviluppo è molto attiva.
Conclusioni
Le conoscenza di base per l’utilizzo di database SQL sono fondamentali per ogni sviluppatore ma scrivere codice SQL è noioso, specialmente per le operazioni standard. L’utilizzo di uno di questi 5 migliori ORM Android può semplificare la vita e rendere lo sviluppo di app più piacevole. Spero con questo elenco di averti aperto una porta verso l’utilizzo di questo tipo di strumento che sicuramente ti farà risparmiare parecchio tempo e renderà le tue app più semplicemente mantenibili.
Lascia un commento