Прочитав несколько статей, я начинаю понимать разницу между DAO и репозиториями, но я нахожусь в затруднении, пытаясь понять разницу между репозиториями и службами.
Для краткости в парадигме OO:
-
DAO: класс, содержащий базовый
CRUD operations
для одного класса сущности. У этого есть необходимый код, чтобы получить или получить вещи из основной постоянной системы хранения. Вообще говоря, методы принимают объектные сущности в качестве параметров, за исключением методаretrieve
, где используется тип идентификатора. -
Хранилища. На более высоком уровне абстракции. Как правило, я прочитал это своеобразное место, где помещается код, обрабатывающий операции над совокупными объектами (объекты, у которых есть дочерние объекты). Он использует
DAO
для извлечения объектов из базы данных и, в конце концов, предоставляет интерфейс в домене "бизнес". (Но опять же, я думаю, что очень полезно использовать типы данных идентификаторов). Пример: очень простойaddSomething
, гдеsomething
- дочерний объект родителя, чьи экземпляры, btw, управляются в целом репозиторием. -
Услуги. Опять же, он находится на более высоком уровне абстракции. С моей скромной точки зрения они являются хорошим местом для подключения двух классов, которые не разделяют отношения между родителями и дочерними элементами, но являются такими же (в абстракционных терминах), как репозиторий. Пример: метод
transferCash
между двумяbank accounts
.
Итак, это мои чтения, но я спрашиваю здесь, что эти мысли правильные или нет. Или как я должен думать. Или что-то, что указывает на то, что я действительно понимаю разницу во всех этих понятиях.
Некоторые источники: