Зачем использовать LiveData в качестве возвращаемого значения у методов интерфейса DAO

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

Ответ

LiveData в DAO предоставляет реактивный способ наблюдения за изменениями в базе данных. При обновлении данных в таблице LiveData автоматически уведомляет подписчиков (например, UI-компоненты), что позволяет:

  1. Автоматически обновлять UI без ручных запросов
  2. Избегать утечек памяти (LiveData учитывает жизненный цикл)
  3. Работать в фоне – Room сам выполняет запросы не в UI-потоке

Пример:

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

// В Activity/Fragment:
userDao.getAll().observe(this) { users ->
    adapter.submitList(users) 
}

При изменении данных в таблице users список в адаптере обновится автоматически.