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

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

Ответ

Да, есть. Room — это ORM-библиотека для работы с SQLite в Android. Она упрощает работу с БД, предоставляя абстракции над SQL-запросами через аннотации.

Основные компоненты:

  • @Entity — класс таблицы.
  • @Dao (Data Access Object) — интерфейс для CRUD-операций.
  • @Database — абстрактный класс, наследующий RoomDatabase.

Пример:

@Entity
data class User(
    @PrimaryKey val id: Int,
    val name: String
)

@Dao
interface UserDao {
    @Query("SELECT * FROM user")
    fun getAll(): List<User>

    @Insert
    fun insert(user: User)
}

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Нюансы:

  • Миграции через Migration.
  • Асинхронные запросы с LiveData/Flow.
  • Тестирование через inMemoryDatabaseBuilder.