Выбор ответа Middle Room и хранение данных обновлено
Зачем @Transaction
Вопрос
Метод DAO сначала удаляет все статьи, затем вставляет новые. Зачем пометить его @Transaction?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Чтобы операции прошли атомарно: без пустой таблицы между ними и с откатом. Транзакция объединяет операции: либо всё, либо ничего.
Варианты ответа
- Чтобы метод выполнялся на главном потоке и UI сразу видел новые данные
- Чтобы ускорить вставку в 10 раз за счёт отключения проверки ограничений и внешних ключей
- Без аннотации DAO не может вызывать свои другие методы внутри себя
- Чтобы операции прошли атомарно: без пустой таблицы между ними и с откатомправильный ответ
Разбор
Транзакция объединяет операции: либо всё, либо ничего. Без неё при ошибке вставки таблица останется пустой, а Flow-подписчики могут получить промежуточное пустое состояние. Внутри транзакции вставка действительно может быть быстрее за счёт одной фиксации, но это побочный эффект. DAO вызывает свои методы и без аннотации, поток не меняется.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.