Wenn Sie mit den neuesten Trends in der Android-Entwicklung Schritt halten, haben Sie wahrscheinlich von Realm gehört. Realm ist eine einfache Datenbank, die sowohl SQLite- als auch ORM-Bibliotheken in Ihren Android-Projekten ersetzen kann.
Im Vergleich zu SQLite ist Realm schneller und bietet viele moderne Funktionen, wie JSON-Unterstützung, eine fließende API, Benachrichtigungen zu Datenänderungen und Verschlüsselungsunterstützung, die Android-Entwicklern das Leben erleichtern.
In diesem kurzen Tipp lernen Sie die Grundlagen von Realm für Android. In diesem Tutorial werde ich verwenden Realm v0.84.1.
Um Realm in einem Android-Projekt verwenden zu können, müssen Sie es als hinzufügen kompilieren
Abhängigkeit in der App Modul build.gradle Datei.
groovy kompilieren 'io.realm: realm-android: 0.84.1'
Ein Realm ähnelt einer SQLite-Datenbank. Es ist eine Datei zugeordnet, die nach der Erstellung auf dem Android-Dateisystem bestehen bleibt.
Um ein neues Realm zu erstellen, können Sie statisch aufrufen Realm.getInstance
Methode aus einem beliebigen Aktivität
.
java Realm myRealm = Realm.getInstance (Kontext);
Beachten Sie diesen Anruf Realm.getInstance
, ohne a RealmConfiguration
Dazu wird die Erstellung einer Realm-Datei aufgerufen default.realm.
Wenn Sie Ihrer App ein weiteres Realm hinzufügen möchten, müssen Sie ein RealmConfiguration.Builder
Objekt und geben Sie der Realm-Datei einen eindeutigen Namen.
java Realm myOtherRealm = Realm.getInstance (neuer RealmConfiguration.Builder (Kontext) .name ("myOtherRealm.realm") .build ());
RealmObject
Jedes JavaBean kann in einem Realm gespeichert werden, sobald es erweitert wird RealmObject
Klasse. Wenn Sie sich fragen, was ein JavaBean ist, handelt es sich einfach um eine Java-Klasse, die serialisierbar ist, über einen Standardkonstruktor verfügt und über Getter / Setter-Methoden für ihre Member-Variablen verfügt. Zum Beispiel können Instanzen der folgenden Klasse leicht in einem Realm gespeichert werden:
"java public class Country erweitert RealmObject
privater String-Name; private int Bevölkerung public Country () public String getName () Rückkehrname; public void setName (Zeichenfolgenname) this.name = name; public int getPopulation () return Population; public void setPopulation (int Population) this.population = Bevölkerung;
"
Wenn Sie eine Membervariable von a verwenden möchten RealmObject
Als Primärschlüssel können Sie den @Primärschlüssel
Anmerkung. So fügen Sie beispielsweise einen Primärschlüssel hinzu Code zum Land
Klasse:
"java @PrimaryKey private String-Code;
public String getCode () Rückkehrcode;
public void setCode (String code) this.code = code; "
Während das Lesen von Daten aus einem Realm sehr einfach ist, wie Sie im nächsten Schritt sehen werden, ist das Schreiben von Daten etwas komplexer. Realm ist ACID-konform. Um Einheitlichkeit und Konsistenz sicherzustellen, zwingt Realm Sie, alle Schreibvorgänge innerhalb einer Transaktion auszuführen.
Um eine neue Transaktion zu starten, verwenden Sie die beginTransaction
Methode. Um die Transaktion zu beenden, verwenden Sie ebenfalls die commitTransaction
Methode.
So erstellen und speichern Sie eine Instanz von Land
Klasse:
"java myRealm.beginTransaction ();
// ein Objekt erstellen country country1 = myRealm.createObject (Country.class); // Setze die Felder country1.setName ("Norway"); country1.setPopulation (5165800); country1.setCode ("NO");
myRealm.commitTransaction (); "
Das hast du vielleicht gemerkt Land1
wurde nicht mit dem Konstruktor von erstellt Land
Klasse. Für ein Realm, um eine Instanz von a zu verwalten RealmObject
, Die Instanz muss mit dem erstellt werden createObject
Methode.
Wenn Sie den Konstruktor verwenden müssen, vergessen Sie nicht die Verwendung von copyToRealm
Methode des relevanten Reich
Objekt, bevor Sie die Transaktion festschreiben. Hier ist ein Beispiel:
"java // Das Objekt erstellen country country2 = new Country (); country2.setName (" Russia "); country2.setPopulation (146430430); country2.setCode (" RU ");
myRealm.beginTransaction (); Land copyOfCountry2 = meinRealm.copyToRealm (Land2); myRealm.commitTransaction (); "
Realm bietet eine sehr intuitive und fließende API zum Erstellen von Abfragen. Um eine Abfrage zu erstellen, verwenden Sie die woher
Methode des relevanten Reich
object und übergeben Sie die Klasse der Objekte, an denen Sie interessiert sind. Nachdem Sie die Abfrage erstellt haben, können Sie alle Ergebnisse mit dem Befehl abrufen finde alle
Methode, die a zurückgibt RealmErgebnisse
Objekt. Im folgenden Beispiel werden alle Objekte des Typs abgerufen und gedruckt Land
:
"Java RealmResults
für (Land c: Ergebnisse1) Log.d ("Ergebnisse1", c.getName ());
// druckt Norwegen, Russland "
Realm bietet mehrere passend benannte Methoden, wie z beginnt mit
, endet mit
, weniger als
und größer als
, Sie können die Ergebnisse filtern. Der folgende Code zeigt Ihnen, wie Sie das verwenden können größer als
Methode, um nur diese abzurufen Land
Objekte, deren Population
ist größer als 100 Millionen:
"Java RealmResults
// bekommt nur Russland "
Wenn Sie möchten, dass die Ergebnisse der Abfrage sortiert werden, können Sie das verwenden findAllSorted
Methode. Als Argumente braucht es a String
Geben Sie den Namen des Felds an, nach dem sortiert werden soll, und a boolean
Angabe der Sortierreihenfolge.
"java // Sortiere nach Name in absteigender Reihenfolge RealmResults
// bekommt Russland, Norwegen "
In diesem kurzen Tipp haben Sie gelernt, wie Sie Realm in einem Android-Projekt verwenden. Sie haben gesehen, wie einfach es ist, eine Realm-Datenbank zu erstellen, Daten darin zu speichern und abzufragen. Weitere Informationen zu Realm für Android finden Sie in der Java-Dokumentation.