Si vous avez suivi les dernières tendances en matière de développement Android, vous avez probablement entendu parler de Realm. Realm est une base de données légère pouvant remplacer les bibliothèques SQLite et ORM dans vos projets Android..
Par rapport à SQLite, Realm est plus rapide et offre de nombreuses fonctionnalités modernes, telles que la prise en charge de JSON, une API fluide, les notifications de modification de données et la prise en charge du chiffrement, facilitant ainsi la vie des développeurs Android..
Dans cette astuce, vous allez apprendre les bases de Realm for Android. Dans ce tutoriel, je vais utiliser Domaine v0.84.1.
Pour utiliser Realm dans un projet Android, vous devez l’ajouter en tant que compiler
dépendance dans le app modules build.gradle fichier.
groovy compile 'io.realm: realm-android: 0.84.1'
Un royaume est similaire à une base de données SQLite. Il est associé à un fichier qui, une fois créé, persistera dans le système de fichiers d'Android..
Pour créer un nouveau royaume, vous pouvez appeler le statique Realm.getInstance
méthode de l'intérieur de tout Activité
.
java Realm myRealm = Realm.getInstance (context);
Notez que l'appelant Realm.getInstance
, sans passer un Configuration du domaine
entraîne la création d’un fichier de domaine appelé default.realm.
Si vous souhaitez ajouter un autre royaume à votre application, vous devez utiliser un RealmConfiguration.Builder
objet et donnez un nom unique au fichier de royaume.
java Realm myOtherRealm = Realm.getInstance (new RealmConfiguration.Builder (context) .name ("myOtherRealm.realm") .build ());
RealmObject
Tout JavaBean peut être stocké dans un royaume une fois qu'il étend la RealmObject
classe. Si vous vous demandez ce qu'est un JavaBean, il s'agit simplement d'une classe Java sérialisable, dotée d'un constructeur par défaut et de méthodes getter / setter pour ses variables membres. Par exemple, les instances de la classe suivante peuvent être facilement stockées dans un royaume:
"Classe publique java Pays étend RealmObject
nom de chaîne privé; privé int population; public Country () public String getName () nom de retour; public void setName (Nom de chaîne) this.name = name; public int getPopulation () population de retour; public void setPopulation (int population) this.population = population;
"
Si vous voulez utiliser une variable membre d'un RealmObject
en tant que clé primaire, vous pouvez utiliser le @Clé primaire
annotation. Par exemple, voici comment ajouter une clé primaire appelée code au Pays
classe:
"java @PrimaryKey private String code;
public String getCode () code retour;
public void setCode (Code de chaîne) this.code = code; "
Bien que la lecture des données d'un royaume soit très simple, comme vous le verrez à l'étape suivante, l'écriture de données sur celui-ci est légèrement plus complexe. Realm est conforme à ACID et pour assurer la cohérence et l'atomicité, Realm vous oblige à exécuter toutes les opérations d'écriture dans une transaction..
Pour commencer une nouvelle transaction, utilisez le bouton beginTransaction
méthode. De même, pour mettre fin à la transaction, utilisez le commitTransaction
méthode.
Voici comment créer et sauvegarder une instance de Pays
classe:
"java myRealm.beginTransaction ();
// Créer un objet Pays pays1 = myRealm.createObject (Country.class); // Définit ses champs pays1.setName ("Norvège"); country1.setPopulation (5165800); country1.setCode ("NO");
myRealm.commitTransaction (); "
Vous avez peut-être remarqué que pays1
n'a pas été créé en utilisant le constructeur de la Pays
classe. Pour qu'un royaume gère une instance d'un RealmObject
, l'instance doit être créée à l'aide du createObject
méthode.
Si vous devez utiliser le constructeur, n'oubliez pas d'utiliser le copyToRealm
méthode de la Domaine
objet avant de valider la transaction. Voici un exemple:
"java // Créer l'objet Pays Pays2 = nouveau Pays (); pays2.setName (“ Russie ”); pays2.setPopulation (146430430); pays2.setCode (“ RU ”);
myRealm.beginTransaction (); Pays copyOfCountry2 = myRealm.copyToRealm (country2); myRealm.commitTransaction (); "
Realm propose une API très intuitive et fluide pour la création de requêtes. Pour créer une requête, utilisez le où
méthode de la Domaine
objet et passez la classe des objets qui vous intéressent. Après avoir créé la requête, vous pouvez extraire tous les résultats à l'aide de la Trouver tout
méthode, qui retourne un DomaineRésultats
objet. Dans l'exemple suivant, nous récupérons et imprimons tous les objets de type Pays
:
"java realmResults
pour (pays c: résultats1) log.d («résultats1», c.getName ());
// Imprime la Norvège, la Russie "
Realm propose plusieurs méthodes bien nommées, telles que commence par
, se termine par
, moins que
et plus grand que
, vous pouvez utiliser pour filtrer les résultats. Le code suivant vous montre comment utiliser le plus grand que
méthode pour ne chercher que ceux Pays
objets dont population
est supérieur à 100 millions:
"java realmResults
// Obtient seulement la Russie "
Si vous souhaitez que les résultats de la requête soient triés, vous pouvez utiliser le findAllSorted
méthode. Comme arguments, il faut un Chaîne
en spécifiant le nom du champ à trier et un booléen
spécifiant l'ordre de tri.
"java // Tri par nom, par ordre décroissant RealmResults
// Obtient la Russie et la Norvège "
Dans cette astuce, vous avez appris à utiliser Realm dans un projet Android. Vous avez constaté à quel point il est facile de créer une base de données Realm, d'y stocker des données et de l'interroger. Pour en savoir plus sur Realm for Android, vous pouvez consulter sa documentation Java..