2014-10-31 7 views
1

Это может быть больше о личных предпочтениях, чем о чем-либо, но я пытался обвести голову вокруг шаблона репозитория и единицы работы, но я видел очень разные виды использования и хотел бы знать который «лучше» и почему.Репозиторий и шаблон дизайна работы

Использование 1: При таком использовании, репозиторий помещается в единице работы

Использование 2: При таком использовании, единица работы помещается в хранилище

ответ

1

Это ... . сложно. Сначала начните с моего простого объяснения what a Repository is. Далее, концепция UoW злоупотребляется и злоупотребляется. Учитывая репозитории, подход DDD к работе с Aggregates означает, что репозиторий инкапсулирует UoW, поскольку все в сводном корне необходимо сохранить в целом. На уровне db UoW просто означает использование транзакций, и это работает даже с несколькими репозиториями, если они используют одну и ту же транзакцию.

Однако в большинстве случаев это неправильный дизайн, поскольку он обычно работает только для нераспределенных приложений и требует некоторого хранилища, совместимого с ACID. Хотя это может быть ваш случай, тот факт, что вы используете шаблон хранилища, означает, что вы хотите, чтобы ваше приложение было неуверенным, и это означает, что ваше приложение не должно знать о UoW, который является шаблоном, который можно использовать внутри персистентности (ORM или непосредственно через транзакцию db).

Итак, я бы сказал, что «правильный» ответ: репозиторий может использовать реализацию UoW, в зависимости от конкретных потребностей. Если вы используете ORM, то UoW используется автоматически.

 Смежные вопросы

  • Нет связанных вопросов^_^