Какие знаешь основные компоненты в Room

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

Ответ

Room — это ORM-библиотека для работы с SQLite в Android. Основные компоненты:

  1. Entity — класс, представляющий таблицу в БД. Аннотируется @Entity.
    @Entity(tableName = "users")
    data class User(
        @PrimaryKey val id: Int,
        val name: String
    )
  1. Dao (Data Access Object) — интерфейс с методами для доступа к данным. Аннотируется @Dao.
    @Dao
    interface UserDao {
        @Query("SELECT * FROM users")
        fun getAll(): List<User>
    }
  1. Database — абстрактный класс, расширяющий RoomDatabase. Связывает Entity и Dao.
    @Database(entities = [User::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
  1. TypeConverters — для конвертации сложных типов (например, Date в Long).

Room также поддерживает миграции, LiveData, RxJava и Coroutines.