DAO Design Pattern и сервлеты - PullRequest
       45

DAO Design Pattern и сервлеты

1 голос
/ 18 декабря 2011

Я читаю о шаблоне проектирования DAO на веб-сайте Oracle и пытаюсь понять приведенное ниже изображение в контексте использования JSP, сервлетов, простых объектов Java и шаблона MVC. В моем случае, BusinessObject будет моим сервлетом, а TransferObject будет моим Java-классом с только свойствами, мутаторами и аксессорами (DTO)?

Например, если бы у меня был этот код в сервлете (контроллере)

DTO.setFirstName(request.getParameter("firstName"));
DTO.setLastName(request.getParameter("lastName"));
DAO.save(DTO);

http://java.sun.com/blueprints/corej2eepatterns/Patterns/images09/figure09_02.jpg

Ответы [ 3 ]

3 голосов
/ 18 декабря 2011

Почти.Между контроллером, который обрабатывает логику представления, и DAO, который обрабатывает логику доступа к данным, должен существовать бизнес-уровень, содержащий бизнес-объекты.

Основными обязанностями этих бизнес-объектов являются

  • для предоставления бизнес-услуг контролерам.Они являются фасадом
  • для инкапсуляции бизнес-логики приложения
  • для разграничения транзакций
  • для использования одного или нескольких DAO для получения, поиска и сохранения объектов.

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

Бизнес-объекты обычно реализуются с использованием EJB-сессий или Spring-сервисов.Они также полезны, чтобы иметь возможность

  • модульного тестирования контроллера путем насмешки бизнес-объектов.
  • модульного тестирования бизнес-логики путем насмешки над DAO
0 голосов
/ 18 декабря 2011

Весь шаблон DAO является частью слоя Model в MVC, в котором BussinessObject предлагает интерфейс Model, а объекты DAO и DTO - часть реализации шаблона.

Ваш сервлет будет (в) слое Controller, а класс, который вы используете для визуализации HTML (или другого формата) для отправки клиенту, будет (в) слое View.

Размер и сложность вашего веб-приложения определяют, могут ли слои быть построены только из одного класса.

В ответ на ваш комментарий DTO (мы называем его объектами-держателями данных) состоит только из атрибутов, методов получения / установки, методов очистки и проверки. Они функционируют как разделение проблем между хранением / передачей и реализацией бизнес-логики.

0 голосов
/ 18 декабря 2011

Да, BusinessObject выглядит как C (контроллер) MVC.

...