Ответ
Room генерирует код во время компиляции с помощью аннотационного процессора (kapt или ksp). Это происходит после написания кода, но до его выполнения.
Пример:
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
Генерация происходит:
- Компилятор находит аннотации (@Entity, @Dao, @Database)
- Аннотационный процессор Room анализирует их
- Генерирует реализации абстрактных классов/методов
- Создает схему БД и SQL-запросы
Сгенерированный код можно найти в build/generated/source/kapt/ или аналогичной папке для KSP.