Встречается на собеседованиях • сегодня

Что такое UnitOfWork

UnitOfWork — это паттерн, который отслеживает изменения объектов во время бизнес-транзакции и координирует запись этих изменений в базу данных. Он действует как контейнер для изменений, группируя их в единую транзакцию, что обеспечивает атомарность и согласованность данных.

Основные преимущества:

  • Отслеживает новые, изменённые и удалённые объекты.
  • Позволяет откатить изменения целиком при ошибке.
  • Упрощает управление транзакциями.

Пример с SQLAlchemy:

python
class UnitOfWork:
    def __init__(self, session_factory):
        self.session_factory = session_factory
        
    def __enter__(self):
        self.session = self.session_factory()
        return self
        
    def __exit__(self, exc_type, exc_val, exc_tb):
        if exc_type is not None:
            self.session.rollback()
        else:
            self.session.commit()
        self.session.close()
        
# Использование
with UnitOfWork(Session) as uow:
    user = User(name='Alice')
    uow.session.add(user)
    # Автоматический commit или rollback
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы