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

Какую проблему решает использование паттерна Repository над ORM

Паттерн Repository добавляет уровень абстракции между бизнес-логикой и слоем доступа к данным. Основные преимущества:

  1. Изоляция бизнес-логики от деталей работы с БД. Бизнес-слой работает с репозиторием, не зная, используется ли ORM, raw SQL или что-то еще.

  2. Упрощение тестирования - можно легко подменить реальный репозиторий mock-объектом.

  1. Централизация логики запросов - все запросы к данным находятся в одном месте.

  2. Гибкость - можно менять ORM или способ хранения без изменений в бизнес-логике.

Пример:

python
class UserRepository:
    def __init__(self, session):
        self.session = session
    
    def get_by_id(self, user_id):
        return self.session.query(User).get(user_id)
    
    def add(self, user):
        self.session.add(user)

# В бизнес-логике:
repo = UserRepository(session)
user = repo.get_by_id(1)

Без репозитория бизнес-логика напрямую работала бы с ORM, что усложняет поддержку и тестирование.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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