Что будут возвращать методы интерфейса DAO

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

Ответ

Методы интерфейса DAO (Data Access Object) возвращают данные в зависимости от их назначения:

  1. @Insert - возвращает long (id вставленной записи) или Long[] для массовой вставки
  2. @Update/@Delete - возвращают int (количество затронутых строк)
  3. @Query с SELECT - возвращают:
    • T - для одного объекта
    • List<T> - для коллекции
    • LiveData<T> - для observable данных
    • Flow<T> - для Kotlin Flow

Пример:

@Dao
interface UserDao {
    @Insert
    fun insert(user: User): Long

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

    @Query("SELECT * FROM users WHERE id = :id")
    fun getById(id: Long): LiveData<User>
}