Для чего нужна аннотация Dao в Room

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

Ответ

Аннотация @Dao (Data Access Object) в Room помечает интерфейс или абстрактный класс, который определяет методы для доступа к базе данных. Она служит прослойкой между бизнес-логикой и SQL-запросами, упрощая работу с БД.

Ключевые моменты:

  • Содержит методы с аннотациями @Insert, @Update, @Delete, @Query
  • Room автоматически генерирует реализацию
  • Позволяет выполнять операции в UI-потоке (но лучше использовать корутины/RxJava)

Пример:

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

    @Insert
    suspend fun insert(user: User)

    @Query("DELETE FROM users WHERE id = :userId")
    fun deleteById(userId: Int)
}