Data Mapper отделяет хранение объектов от их поведения; в SQLAlchemy этим занимается ORM и Session. Active Record связывает объект записи с методами сохранения и поиска, как у моделей Django.
Чем паттерн Data Mapper в SQLAlchemy концептуально отличается от Active Record в Django ORM?
Data Mapper отделяет хранение объектов от их поведения; в SQLAlchemy этим занимается ORM и Session. Active Record связывает объект записи с методами сохранения и поиска, как у моделей Django.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Data Mapper отделяет хранение объектов от их поведения; в SQLAlchemy этим занимается ORM и Session. Active Record связывает объект записи с методами сохранения и поиска, как у моделей Django.
В Django экземпляр модели обычно сам предоставляет save() и delete(), а запросы доступны через менеджер модели. В SQLAlchemy Session отслеживает изменения и координирует запись объектов; возможны разные способы mapping. Это различие ответственности, а не запрет бизнес-методов или абсолютная независимость от ORM. На практике архитектура зависит ещё и от того, как команда организует сервисы, транзакции и доменные правила.