Ответ
Транзакции в 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 при ошибке во второй операции первая уже будет выполнена, что приведёт к несогласованности данных. Также транзакции улучшают производительность при массовых операциях.