Sus și Running With Realm pentru Android

Introducere

Dacă ați ținut pasul cu ultimele tendințe în dezvoltarea Androidului, probabil că ați auzit de Realm. Realm este o bază de date ușoară care poate înlocui librăriile SQLite și ORM în proiectele Android.

În comparație cu SQLite, Realm este mai rapid și are o mulțime de caracteristici moderne, cum ar fi suportul JSON, un API fluent, notificările privind schimbările de date și suportul pentru criptare, toate făcând viața mai ușoară pentru dezvoltatorii Android.

În acest sfat rapid, veți afla informațiile de bază despre Realm pentru Android. În acest tutorial, voi folosi Realm v0.84.1.

1. Adăugarea domeniului la un proiect

Pentru a utiliza Realm într-un proiect Android, trebuie să îl adăugați ca un compila dependența în aplicaţia ale modulului build.gradle fişier.

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

2. Crearea unui taram

Un domeniu este similar cu o bază de date SQLite. Are un fișier asociat cu acesta, care, odată creat, va persista în sistemul de fișiere Android.

Pentru a crea un nou domeniu, puteți apela staticul Realm.getInstance metodă din interior Activitate.

java Realm myRealm = Realm.getInstance (context);

Rețineți că sunați Realm.getInstance, fără a trece a RealmConfiguration la aceasta, duce la crearea unui fișier Realm numit default.realm.

Dacă doriți să adăugați un alt Realm la aplicația dvs., trebuie să utilizați a RealmConfiguration.Builder obiect și dați fișierului Realm un nume unic.

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

3. Crearea unui a RealmObject

Orice JavaBean poate fi stocat într-o regiune după ce se extinde RealmObject clasă. Dacă vă întrebați ce este un JavaBean, este pur și simplu o clasă Java care este serializabilă, are un constructor implicit și are metode getter / setter pentru variabilele sale membre. De exemplu, instanțele din clasa următoare pot fi ușor stocate într-un Realm:

"clase publice java clasa extinde RealmObject

numele String privat; populația privată int; public Țară ()  public String getName () return name;  public void setName (Nume șir) this.name = nume;  public int getPopulation () retur populație;  void public setPopulație (populație int) this.population = population;  

Dacă doriți să utilizați o variabilă membru a RealmObject ca cheie primară, puteți utiliza funcția @Cheia principala adnotare. De exemplu, iată cum ați adăuga o cheie primară numită cod la Țară clasă:

"java @ PrrimaryKey codul String privat;

public String getCode () cod de retur;

public void setCode (cod de șir) this.code = cod; “

4. Crearea de tranzacții

În timp ce citiți date dintr-un domeniu este foarte simplu, așa cum veți vedea în pasul următor, scrierea de date către el este puțin mai complexă. Realmul este compatibil cu ACID și pentru a asigura atomicitatea și consecvența, Realm vă forțează să executați toate operațiile de scriere într-o tranzacție.

Pentru a începe o nouă tranzacție, utilizați beginTransaction metodă. În mod similar, pentru a încheia tranzacția, utilizați commitTransaction metodă.

Iată cum ați putea crea și salva o instanță a Țară clasă:

"java myRealm.beginTransaction ();

// Creați un obiect Țara țării1 = myRealm.createObject (Country.class); // Setați câmpurile sale country1.setName ("Norvegia"); country1.setPopulation (5165800); country1.setCode ( "NO"); 

myRealm.commitTransaction ();“

S-ar putea să fi observat asta COUNTRY1 nu a fost creat folosind constructorul Țară clasă. Pentru ca un regat să administreze o instanță a RealmObject, instanța trebuie să fie creată folosind CREATEOBJECT metodă.

Dacă trebuie să utilizați constructorul, nu uitați să îl utilizați copyToRealm metoda relevanta domeniu obiecte înainte de a vă angaja tranzacția. Iată un exemplu:

"java // Creați obiectul Țara țării2 = țară nouă (); country2.setName (" Rusia "); country2.setPopulation (146430430); country2.setCode (" ÎF ");

myRealm.beginTransaction (); Țara copyOfCountry2 = myRealm.copyToRealm (country2); myRealm.commitTransaction ();“

5. Scrierea interogărilor

Realm oferă un API foarte intuitiv și fluent pentru a crea interogări. Pentru a crea o interogare, utilizați Unde metoda relevanta domeniu obiect și să treacă clasa obiectelor care vă interesează. După crearea interogării, puteți prelua toate rezultatele folosind Găsiți toate , care returnează a RealmResults obiect. În următorul exemplu, preluăm și imprimăm toate obiectele de tip Țară:

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

pentru (Țara c: rezultatele1) Log.d ("results1", c.getName ());

// Prints Norvegia, Rusia "

Realm oferă mai multe metode potrivite, cum ar fi începe cu, se termină cu, lesserThan și mai mare ca, puteți utiliza pentru filtrarea rezultatelor. Următorul cod vă arată cum puteți utiliza mai mare ca metodă de a prelua numai acelea Țară obiecte ale căror populație este mai mare de 100 milioane:

"java RealmResults rezultatele2 = myRealm.where (Country.class) .greaterThan ("populație", 100000000) .findAll ();

// Devine doar Rusia "

Dacă doriți ca rezultatele interogării să fie sortate, puteți folosi findAllSorted metodă. Ca argumentele sale, este nevoie de a Şir specificând numele câmpului pentru a sorta și a boolean specificând ordinea de sortare.

"java // Sortează după nume, în ordine descrescătoare RealmResults rezultatele3 = myRealm.where (Country.class) .findAllSorted ("nume", false);

// Intră Rusia, Norvegia "

Concluzie

În acest sfat rapid, ați învățat cum să utilizați Realm într-un proiect Android. Ați văzut cât de ușor este crearea unei baze de date Realm, stocarea datelor în ea și interogarea acesteia. Pentru a afla mai multe despre Realm pentru Android, puteți trece prin documentația Java.

Cod