Для чего используется Transaction в Room

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

Ответ

Транзакции в Room гарантируют атомарность операций — либо все операции выполняются успешно, либо ни одна. Это полезно при группировке нескольких запросов в одну логическую единицу работы, например, при обновлении связанных данных.

Пример:

@Dao
interface UserDao {
    @Transaction
    suspend fun updateUserAndLog(user: User, log: LogEntry) {
        updateUser(user)
        insertLog(log)
    }

    @Update
    suspend fun updateUser(user: User)

    @Insert
    suspend fun insertLog(log: LogEntry)
}

Без @Transaction при ошибке во второй операции первая уже будет выполнена, что приведёт к несогласованности данных. Также транзакции улучшают производительность при массовых операциях.