2009-04-24 4 views
9

Если вы создаете класс репозитория, который инкапсулирует всю вашу логику персистентности для данного объекта, например PersonRepository, но ваш класс репозитория не реализует шаблон Unit of Work или шаблон карты Identity Map, он все еще считается репозиторием? Другими словами, это Единица работы и идентификационная карта, необходимая для реализации репозитория, или мы можем просто вызвать любой класс, который инкапсулирует нашу логику сохранения в репозиторий?Является ли репозиторий еще репозиторием без единицы работы?

Я должен добавить одну вещь. Если репозиторий не требует этих шаблонов, и это действительно просто контейнер для методов сохранения, то в чем разница между репозиторием и DAO (объектом доступа к данным)? Разве мы просто создаем несколько имен для одного и того же объекта, или нам не хватает части того, что должен быть репозиторий?

ответ

3

Да, это все еще репозиторий.

Что касается Repository == DAO, я думаю, что репозиторий должен быть на уровне бизнес-логики, а DAO должен быть на уровне доступа к данным, т. Е. Я думаю, что они находятся на разных уровнях. Как я понимаю, репозиторий вызывает методы DAO для загрузки и сохранения данных.

3

Я бы сказал, что образцы репозитория и единицы работы ортогональны.

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

1

Основываясь на том, что сказал Sii - кажется, лучше мне, если хранилище и единица работы не связаны. Разделение проблем?

1

При рассмотрении вопроса о разделении проблем помните, что в вашем хранилище будут реализованы методы хранения данных, позволяющие сохранить это из основного кода. Это полезно для модульного тестирования, а также в конечном итоге полностью заменяет реализацию хранилища данных (примером реализации хранилища данных будет LINQ-to-SQL в ASP.NET.)

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

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