Realm — это решение для мобильной базы данных, которое представляет собой альтернативу традиционным базам данных SQL, таким как SQLite. Он разработан специально для мобильных устройств и стал популярным выбором для хранения и управления данными в приложениях Android. В этой статье мы рассмотрим основы Realm и то, как его можно использовать в Android для хранения, извлечения и управления данными.
Что такое Царство? Realm — это объектно-ориентированная база данных с открытым исходным кодом, созданная специально для мобильных устройств. Он обеспечивает простой, быстрый и эффективный способ хранения данных на мобильном устройстве. В отличие от традиционных баз данных SQL, Realm не основана на реляционной модели, что делает ее более простой в использовании и более эффективной для хранения данных на мобильных устройствах.
Начало работы с Realm в Android Чтобы начать работу с Realm в Android, вам нужно добавить библиотеку Realm в свой проект. Это можно сделать, добавив следующую строку в файл build.gradle
вашего приложения:
implementation 'io.realm:realm-android:<latest-version>'
Далее вам нужно будет создать экземпляр базы данных Realm. Вы можете сделать это, создав класс, который расширяет класс RealmObject, например:
import io.realm.RealmObject import io.realm.annotations.PrimaryKey open class Person( @PrimaryKey var id: Int = 0, var name: String = "", var age: Int = 0 ) : RealmObject()
Создав экземпляр базы данных Realm, вы можете приступить к хранению и извлечению данных.
Выбирать
Чтобы получить данные из базы данных Realm, вы можете использовать метод where
для фильтрации результатов, например:
val realm = Realm.getDefaultInstance() val results = realm.where(Person::class.java).findAll()
Вставлять
Чтобы вставить данные в базу данных Realm, вы можете создать новый экземпляр RealmObject и использовать метод copyToRealm
для его сохранения, например:
val realm = Realm.getDefaultInstance() realm.beginTransaction() val person = realm.createObject(Person::class.java, primaryKeyValue) person.name = "John Doe" person.age = 30 realm.commitTransaction()
Обновлять
Чтобы обновить данные в базе данных Realm, вы можете использовать метод copyToRealmOrUpdate
для сохранения изменений, например:
val realm = Realm.getDefaultInstance() realm.beginTransaction() val person = realm.where(Person::class.java).equalTo("id", primaryKeyValue).findFirst() person?.name = "Jane Doe" realm.commitTransaction()
Удалить
Чтобы удалить данные из базы данных Realm, вы можете использовать метод delete
, например:
val realm = Realm.getDefaultInstance() realm.beginTransaction() val person = realm.where(Person::class.java).equalTo("id", primaryKeyValue).findFirst() person?.deleteFromRealm() realm.commitTransaction()
связи
Отношения «один к одному». В отношении «один к одному» экземпляр одного объекта RealmObject связан только с одним экземпляром другого объекта RealmObject. Например, рассмотрим объекты Person
и Address
. Объект Person
имеет один объект Address
, поэтому вы можете определить эту связь в Realm, добавив поле Address
к объекту Person
.
import io.realm.RealmObject import io.realm.annotations.PrimaryKey open class Person( @PrimaryKey var id: Int = 0, var name: String = "", var age: Int = 0, var address: Address? = null ) : RealmObject() open class Address( @PrimaryKey var id: Int = 0, var street: String = "", var city: String = "", var state: String = "", var zip: String = "" ) : RealmObject()
Отношения «один ко многим». В отношении «один ко многим» экземпляр одного объекта RealmObject связан с несколькими экземплярами другого объекта RealmObject. Например, рассмотрим объекты Person
и Pet
. Объект Person
может иметь несколько объектов Pet
, поэтому вы можете определить эту связь в Realm, добавив RealmList
из Pet
объектов к объекту Person
.
import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey open class Person( @PrimaryKey var id: Int = 0, var name: String = "", var age: Int = 0, var pets: RealmList<Pet> = RealmList() ) : RealmObject() open class Pet( @PrimaryKey var id: Int = 0, var name: String = "", var breed: String = "" ) : RealmObject()
Отношения «многие ко многим». В отношениях «многие ко многим» экземпляр одного объекта RealmObject связан с несколькими экземплярами другого объекта RealmObject и наоборот. Например, рассмотрим объекты Person
и Event
. Объект Person
может сопровождать несколько объектов Event
, а объект Event
может сопровождаться несколькими объектами Person
. Чтобы реализовать эту связь, вы должны добавить RealmList
из Person
объектов к Event
объекту и RealmList
из Event
объектов к Person
объекту.
import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey open class Person( @PrimaryKey var id: Int = 0, var name: String = "", var age: Int = 0, var events: RealmList<Event> = RealmList() ) : RealmObject() open class Event( @PrimaryKey var id: Int = 0, var name: String = "", var date: String = "", var attendees: RealmList<Person> = RealmList() ) : RealmObject()
В заключение, Realm — это мощное и эффективное решение для мобильной базы данных, которое упрощает хранение, извлечение и управление данными в приложениях Android. Интуитивно понятный API Realm, высокая производительность и встроенная поддержка отношений делают его популярным выбором для разработки приложений, управляемых данными. Независимо от того, работаете ли вы с небольшим объемом данных или управляете большими наборами данных, Realm предоставляет инструменты и функции, необходимые для создания и обслуживания высокопроизводительных и масштабируемых приложений. Если вы ищете быстрое и надежное решение для баз данных для своих проектов Android, попробуйте Realm.