Уровни домена, DAO и сервиса

Мне нужно узнать разницу между типом методов (с точки зрения бизнес-логики), которые должны находиться внутри объектов Domain, DAO и Service layers.

например, если я создаю небольшое веб-приложение для создания, редактирования и удаления данных клиентов, насколько я понимаю внутри объекта слоя домена, я должен добавить методы, которые получают/задают свойства объекта клиентов, например (getName, getDOB, setAddress, setPhone...п.)

теперь то, что я пытаюсь узнать какие методы я должен поместить в объекты DAO и Service layers.

заранее спасибо за ваше время и усилия.

2 ответов


говоря вообще (не Hibernate или Spring specific):

слой DAO содержит запросы и обновления для сохранения слоя домена в хранилище данных (обычно это реляционная БД, но не обязательно). Используйте интерфейсы, чтобы абстрагировать DAO от фактического хранилища данных. Это происходит не часто, но иногда вы хотите изменить хранилища данных (или использовать насмешки, чтобы проверить свою логику), и интерфейсы облегчают это. Это будет иметь такие методы, как "сохранить", " getById", так далее.

сервисный уровень обычно содержит вашу бизнес-логику и организует взаимодействие между доменным уровнем и DAOs. У него были бы любые методы, имеющие смысл для вашей конкретной области, такие как "verifyBalance" или "calculateTotalMileage".


DAO: методы" обертки "для" обертывания " вызовов JPA или JDBC, SQL или noSQL или для доступа к системам БД.

Domain: вызовы бизнес-логики, связанные с одним типом сущностей (объектов домена).

Service: вызовы бизнес-логики, связанные с группой типов сущностей или с группой из нескольких сущностей одного типа.

(Я не уверен насчет английского, извините.......)

Это означает: Уровень сервиса "больше", чем уровень домена, часто близок к интерфейсу, часто вызывает или использует несколько объектов домена.

объекты домена инкапсулируют большинство вещей для одной части домена (вот почему они называются D. O.)

DAO - это просто технический sth, иногда необходимый, иногда нет. Когда используются объекты реального домена, часто "репозитории" используются для скрытия доступа к системам баз данных или добавления специальных функций БД или чего-либо еще.

front-end --> метод обслуживания 1 --> d.o. A типа X, d.o. B типа X, список