Выбор ответа Middle Room и хранение данных обновлено

Зачем @Transaction

Вопрос

Метод DAO сначала удаляет все статьи, затем вставляет новые. Зачем пометить его @Transaction?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Чтобы операции прошли атомарно: без пустой таблицы между ними и с откатом. Транзакция объединяет операции: либо всё, либо ничего.

Варианты ответа

  1. Чтобы метод выполнялся на главном потоке и UI сразу видел новые данные
  2. Чтобы ускорить вставку в 10 раз за счёт отключения проверки ограничений и внешних ключей
  3. Без аннотации DAO не может вызывать свои другие методы внутри себя
  4. Чтобы операции прошли атомарно: без пустой таблицы между ними и с откатомправильный ответ

Разбор

Транзакция объединяет операции: либо всё, либо ничего. Без неё при ошибке вставки таблица останется пустой, а Flow-подписчики могут получить промежуточное пустое состояние. Внутри транзакции вставка действительно может быть быстрее за счёт одной фиксации, но это побочный эффект. DAO вызывает свои методы и без аннотации, поток не меняется.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.