Room 3: Migrace na novou major verzi s podporou wasmJs a korutin
Room 3 zavádí balíček androidx.room3, který se zcela zbavuje závislosti na Android-specifickém SQLite Driver API. Veřejné API nyní využívá zdokumentované alternativy pro práci s připojeními.
Příklad přechodu ze starého stylu na nový:
// Dříve
roomDatabase.query("select * from users").use { cursor -> ... }
// Nyní
roomDatabase.useReaderConnection { connection ->
connection.usePrepared("select * from users") { stmt -> ... }
}
Generování kódu migrovalo z KAPT na KSP. Veškerá interní logika DAO byla přepsána na korutiny, což zjednodušuje asynchronní práci v Kotlin Multiplatform.
Klíčovým vylepšením je podpora wasmJs. KMP verze Room je nyní kompatibilní s WebAssembly, což otevírá možnosti pro mobilní webový vývoj.
Byly odstraněny zastaralé deprekace, což čistí codebase od legacy kódu.
Kroky migrace na Room 3
Migrace probíhá bez radikálních změn v architektuře. Hlavní kroky:
- Aktualizujte plugin a závislosti v build.gradle.kts:
// root build.gradle.kts
plugins {
id("androidx.room3") version "3.0.0-alpha02" apply false
}
// lib build.gradle.kts
plugins {
id("androidx.room3")
}
kotlin {
sourceSets {
commonMain {
val room_version = "3.0.0-alpha02"
implementation("androidx.room3:room3-runtime:$room_version")
ksp("androidx.room3:room3-compiler:$room_version")
}
}
}
room3 {
schemaDirectory("$projectDir/schemas")
}
- Nahraďte importy: RoomDatabase, @Entity a další třídy jsou nyní v balíčku room3.
- Sestavte projekt, opravte chyby. Byly přidány suspend-funkce v DAO, změněno pojmenování metod.
- Zkontrolujte schémata databáze v adresáři schemas — Room 3 je vyžaduje pro kompilaci.
Po migraci otestujte na všech cílových platformách: JVM, Android, iOS, wasmJs.
Výhody pro KMP vývoj
- Korutiny v core: suspend-funkce ve výchozím nastavení v DAO, bez potřeby Flow nebo LiveData.
- wasmJs: Plná podpora WebAssembly umožňuje spouštět Room v prohlížeči bez hacků.
- KSP místo KAPT: Rychlejší kompilace, méně artefaktů.
Srovnání výkonu generování kódu (na základě typických KMP projektů):
| Metrika | Room 2 (KAPT) | Room 3 (KSP) |
|------------------|---------------|---------------|
| Doba kompilace | 45 sekund | 22 sekund |
| Velikost APK | 1.2 MB | 0.9 MB |
| Spuštění na wasm | Ne | Ano |
Údaje jsou orientační, závisí na velikosti projektu.
Co je důležité
- Nový balíček room3 s čistým API bez Android závislostí.
- Plná podpora korutin a KSP pro KMP.
- Integrace wasmJs pro webové aplikace.
- Migrace je jednoduchá: aktualizace závislostí + úprava importů.
- Alfa verze: počkejte na stabilní release pro produkci.
Doporučení pro implementaci
Pro middle/senior vývojáře: začněte s greenfield projekty na KMP. V legacy projektech migraci odložte až do verze 3.0.0-stable.
Testujte na reálných scénářích:
- Transakce s suspend.
- Migrace schémat v wasm.
- Výkon dotazů v prohlížeči.
Room 3 posiluje pozici jako univerzální ORM pro multiplatformní vývoj, zejména s růstem wasm ekosystému.
— Editorial Team
Zatím žádné komentáře.