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.
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'
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 ());
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; "
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 ();"
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
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
// 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
// Ottiene la Russia, Norvegia "
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.