Realm Kotlin: Guia completo com exemplos para Kotlin
1. O que é e para que serve?
Realm Kotlin é um banco de dados móvel moderno, rápido e orientado a objetos, criado especialmente para o ecossistema Kotlin Multiplatform (KMP). Diferente de soluções tradicionais como SQLite ou Room, o Realm não trabalha com tabelas e linhas, mas diretamente com objetos Kotlin. Isso significa que você manipula os dados da mesma forma que classes comuns, sem precisar escrever consultas SQL ou mapear dados manualmente. O Realm Kotlin é o sucessor direto da popular biblioteca Realm para Java, mas foi totalmente reescrito do zero para Kotlin, com suporte a corrotinas, Flow e multiplataforma (Android, iOS, macOS, JVM).
Para que serve? Principalmente, para acelerar o desenvolvimento de aplicativos móveis. O Realm reduz a quantidade de código boilerplate ao trabalhar com armazenamento local. Você simplesmente declara um modelo de dados, e o Realm gera automaticamente tudo o que é necessário para salvar, ler, atualizar e excluir objetos. Graças ao suporte nativo a fluxos reativos (Flow da biblioteca kotlinx.coroutines), qualquer alteração no banco de dados é refletida instantaneamente na interface do usuário, sendo ideal para a arquitetura MVVM. O Realm também é conhecido por sua alta performance: ele roda em um motor C++ próprio, garantindo velocidade de leitura e gravação próxima à nativa.
Principais casos de uso: cache de dados do servidor, funcionamento offline, armazenamento de estruturas aninhadas complexas (como carrinho de compras ou histórico de chat) e sincronização de dados entre dispositivos via Realm Sync (serviço em nuvem MongoDB Atlas). Realm Kotlin não é apenas "mais um ORM", é um motor de banco de dados completo que muda a forma de gerenciar o estado em uma aplicação.
2. Instalação
O Realm Kotlin é instalado através do sistema de build Gradle. Como a biblioteca é voltada para Kotlin Multiplatform, a configuração é um pouco diferente das dependências Android padrão.
Importante: Realm Kotlin não é instalado via pip (Python) ou npm (JavaScript). É uma biblioteca nativa para JVM/Android/iOS.
Adicione o seguinte código ao seu arquivo raiz build.gradle.kts (nível do projeto):
// build.gradle.kts raiz
plugins {
id("io.realm.kotlin") version "1.16.0" apply false
}
Em seguida, no arquivo build.gradle.kts do seu módulo (app ou shared):
// build.gradle.kts do módulo
plugins {
kotlin("multiplatform")
id("io.realm.kotlin")
}
kotlin {
// Configuração dos targets (Android, iOS, etc.)
androidTarget()
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach {
it.binaries.framework {
baseName = "shared"
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation("io.realm.kotlin:library-base:1.16.0")
// Para suporte a corrotinas
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
}
}
// ... outros source sets
}
}
Para projetos Android puros (sem KMP), a configuração é mais simples:
// build.gradle.kts (Módulo :app)
plugins {
id("com.android.application")
kotlin("android")
id("io.realm.kotlin")
}
android {
// ... configurações padrão
}
dependencies {
implementation("io.realm.kotlin:library-base:1.16.0")
}
Após sincronizar o Gradle, a biblioteca estará pronta para uso.
3. Início rápido — exemplo mínimo funcional
Vamos criar um modelo de dados simples "Usuário