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.
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 '
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 ());
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; “
Î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 ();“
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
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
// 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
// Intră Rusia, Norvegia "
Î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.