Помимо перевода реляционных данных в объектную модель, ORM имеет другие роли:
- Lazy Loading
- Автоматическое обнаружение изменений
- Сделки
Однако при преобразовании Репозитория, переводе ORM DTO на Модели доменов, это происходит:
- Невозможно использовать преимущества Lazy Load, так как мне нужно заполнить всю свою Модель домена и Репозиторий не знает, какие данные требуется домену.
- ORM не может обнаружить изменения, так как Модель домена не из мира ORM.
- Невозможно выполнить сразу несколько транзакций из-за отсутствия Домен знаний о ORM
Вопрос 1: Я пропустил какой-то пробел, где у меня могут быть полные преимущества ленивой загрузки, транзакций и автоматического обнаружения изменений в сообщении domain-driven-design сценарий? Или эти преимущества больше подходят для другого подхода (например, Active Record), чем для DDD?
Вопрос 2: Почему orm так упоминается в книгах DDD? Только для реляционной модели домена и Lazy Loading, Transactions и Change Detection полностью отключены
Некоторые платформы имеют подход, основанный на кодах, что позволяет улучшить эти проблемы, однако эта функция не всегда присутствует во многих средах или просто не может использоваться (например, в старой базе данных), поэтому она не решение.