2011-12-18 2 views
1

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

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

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

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

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

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

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

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

Они также полезны, чтобы иметь возможность

  • блок тестирования контроллера насмехаясь над бизнес-объекты
  • модульного тестирования бизнес-логики с помощью насмешливый объектов DAO
+0

Таким образом, сервлеты (или что-то еще) будут использовать эти бизнес-объекты, чтобы легко выполнять крупномасштабные бизнес-действия, такие как «новое резервирование» или «отменить бронирование»? – cherouvim

+0

Точно. И их не волнует, включает ли новое резервирование один, три из четырех различных доступов к базе данных или запускает сообщение сообщения в очереди JMS. Это бизнес-бизнес ... бизнес. –

+0

Это имеет смысл. Считаете ли вы, что этот подход к выравниванию подходит для приложений даже для небольших веб-проектов? Маленьким я имею в виду как логин, выход и 5 случаев использования CRUD. – cherouvim

0

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

+0

Является ли «TransferObject» то же, что и DTO или класс с только свойствами, геттерами и сеттерами? – Robert

+0

Да. DTO = объект передачи данных.Раньше это было полезно много лет назад, но в настоящее время вы, скорее всего, можете передавать реальные постоянные объекты через все слои приложения. – cherouvim

+0

Не обязательно, чтобы у DTO были сеттеры. – cherouvim

0

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

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

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

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