Есть ли опыт работы с Realm

«Есть ли опыт работы с Realm» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, есть. Работал с Realm как локальной NoSQL БД для Android. Основные преимущества:

  • Нативная интеграция (нет ORM-прослоек)
  • Поддержка LiveData/RxJava
  • Автообновление объектов (не нужно перезагружать данные)

Пример базового использования:

// Инициализация
val config = RealmConfiguration.Builder()
    .name("myrealm.realm")
    .build()
Realm.setDefaultConfiguration(config)

// Запись
realm.executeTransaction { realm ->
    val user = realm.createObject(User::class.java)
    user.name = "John"
}

// Чтение
val users = realm.where(User::class.java).findAll()

Нюансы:

  • Требуется закрывать инстансы Realm в onDestroy()
  • Миграции схемы сложнее, чем в Room
  • Нет поддержки Compose в observe() без костылей

Использовал в проектах с оффлайн-кэшированием и сложными связями между объектами.