Up and Running con Realm per Android

introduzione

Se hai seguito le ultime tendenze nello sviluppo di Android, probabilmente hai sentito parlare di Realm. Realm è un database leggero che può sostituire le librerie SQLite e ORM nei progetti Android.

Rispetto a SQLite, Realm è più veloce e ha molte funzionalità moderne, come il supporto JSON, un'API fluente, notifiche di modifica dei dati e supporto per la crittografia, che semplificano la vita agli sviluppatori Android.

In questo suggerimento rapido, imparerai le basi di Realm per Android. In questo tutorial, userò Realm v0.84.1.

1. Aggiunta di regno a un progetto

Per utilizzare Realm in un progetto Android, devi aggiungerlo come compilare dipendenza nel App modulo di build.gradle file.

groovy compile 'io.realm: realm-android: 0.84.1'

2. Creazione di un regno

Un dominio è simile a un database SQLite. Ha un file associato, che, una volta creato, persisterà nel file system di Android.

Per creare un nuovo Reame, puoi chiamare la statica Realm.getInstance metodo da dentro qualsiasi Attività.

java Realm myRealm = Realm.getInstance (contesto);

Si noti che la chiamata Realm.getInstance, senza passare a RealmConfiguration ad esso, i risultati nella creazione di un file di Ream chiamato default.realm.

Se vuoi aggiungere un altro Ream alla tua app, devi usare a RealmConfiguration.Builder oggetto e assegnare al file Ream un nome univoco.

java Realm myOtherRealm = Realm.getInstance (new RealmConfiguration.Builder (context) .name ("myOtherRealm.realm") .build ());

3. Creazione di a RealmObject

Qualsiasi JavaBean può essere memorizzato in un dominio una volta esteso RealmObject classe. Se ti stai chiedendo cosa sia un JavaBean, è semplicemente una classe Java che è serializzabile, ha un costruttore predefinito e ha metodi getter / setter per le sue variabili membro. Ad esempio, le istanze della classe seguente possono essere facilmente archiviate in un dominio:

"java public class Paese estende RealmObject

nome String privato; popolazione privata int; public Paese ()  public String getName () return name;  public void setName (String name) this.name = name;  public int getPopulation () return population;  pubblico pubblico setPopulation (popolazione int) this.population = population;  

"

Se si desidera utilizzare una variabile membro di a RealmObject come chiave primaria, puoi usare il @Chiave primaria annotazione. Ad esempio, ecco come aggiungere una chiave primaria chiamata codice al Nazione classe:

"codice stringa privata java @PrimaryKey;

public String getCode () codice di ritorno;

public void setCode (String code) this.code = code; "

4. Creazione di transazioni

Mentre leggere i dati da un Reame è molto semplice, come vedrai nel passaggio successivo, scrivere i dati su di esso è leggermente più complesso. Il dominio è conforme all'ACID e per garantire l'atomicità e la coerenza, Realm ti obbliga a eseguire tutte le operazioni di scrittura all'interno di una transazione.

Per iniziare una nuova transazione, usa il beginTransaction metodo. Allo stesso modo, per terminare la transazione, utilizzare il CommitTransaction metodo.

Ecco come si crea e si salva un'istanza di Nazione classe:

"java myRealm.beginTransaction ();

// Crea un oggetto Paese country1 = myRealm.createObject (Country.class); // Imposta i suoi campi country1.setName ("Norway"); country1.setPopulation (5.165.800); country1.setCode ( "NO"); 

myRealm.commitTransaction ();"

Avresti potuto accorgertene paese1 non è stato creato utilizzando il costruttore del Nazione classe. Per un regno per gestire un'istanza di a RealmObject, l'istanza deve essere creata usando il createObject metodo.

Se è necessario utilizzare il costruttore, non dimenticare di usare il copyToRealm metodo del pertinente Regno oggetto prima di eseguire il commit della transazione. Ecco un esempio:

"java // Crea l'oggetto Paese paese2 = nuovo Paese (); country2.setName (" Russia "); country2.setPopulation (146430430); country2.setCode (" RU ");

myRealm.beginTransaction (); Paese copyOfCountry2 = myRealm.copyToRealm (country2); myRealm.commitTransaction ();"

5. Scrivere query

Realm offre un'API molto intuitiva e fluente per la creazione di query. Per creare una query, utilizzare il dove metodo del pertinente Regno oggetto e passa la classe degli oggetti a cui sei interessato. Dopo aver creato la query, puoi recuperare tutti i risultati usando il trova tutto metodo, che restituisce a RealmResults oggetto. Nell'esempio seguente, recuperiamo e stampiamo tutti gli oggetti di tipo Nazione:

"java RealmResults results1 = myRealm.where (Country.class) .findAll ();

for (Paese c: risultati1) Log.d ("results1", c.getName ());

// Stampa Norvegia, Russia "

Il reame offre diversi metodi con nomi appropriati, come inizia con, finisce con, lesserThan e più grande di, puoi usare per filtrare i risultati. Il codice seguente mostra come è possibile utilizzare il più grande di metodo per recuperare solo quelli Nazione oggetti di cui popolazione è superiore a 100 milioni:

"java RealmResults results2 = myRealm.where (Country.class) .greaterThan ("population", 100000000) .findAll ();

// Ottiene solo la Russia "

Se si desidera ordinare i risultati della query, è possibile utilizzare findAllSorted metodo. Come i suoi argomenti, ci vuole un Stringa specificando il nome del campo da ordinare per e a booleano specificando l'ordinamento.

"java // Ordina per nome, in ordine decrescente RealmResults results3 = myRealm.where (Country.class) .findAllSorted ("name", false);

// Ottiene la Russia, Norvegia "

Conclusione

In questo suggerimento rapido, hai imparato a usare Realm in un progetto Android. Hai visto quanto è facile creare un database di Realm, archiviarne i dati e interrogarlo. Per ulteriori informazioni su Realm per Android, è possibile consultare la documentazione Java.