Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lec-14-DAO-v001

.pdf
Скачиваний:
13
Добавлен:
18.03.2015
Размер:
1.74 Mб
Скачать

Пример реализации шаблонов

DAO и Session Facsade

Основы разработки

20

корпоративных

WEB приложений на языке Java

ОБСУЖДАЕМЫЕ ВОПРОСЫ

Паттерны Data Access Object (или DAO) и

Session Facade

Пример реализации DAO

Классы сущности, представляющие модель

Особенности реализации

Интерфейс BookStoreDAO

Класс DerbyDAO

Класс AuthorService

ПАТТЕРНЫ DAO И SESSION FACADE

Код компонентов, которые осуществляют обработку данных, может совмещать бизнес логику с логикой доступа к данным.

Это делает трудным замену или модификацию ресурсов данных приложения.

Кроме того, одни и те же компоненты приложения, обрабатывающие данные могут использовать, как разные типы источников (например, базы данных и XML файлы), так и разные методы их использования (например, базы данных разных вендоров).

Решение проблемы разделения специфики хранения и обработки предлагают паттерны DAO и Session Facade

ПАТТЕРН SESSION FACADE

Большинство бизнес процессов содержат сложные манипуляции с бизнес классами.

Бизнес классы участвуют во множестве бизнес процессов или в рабочем потоке.

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

Сложные взаимоотношения между низкоуровневыми бизнес компонентами делают клиентов сложными для написания.

ПАТТЕРН SESSION FAÇADE

(ПРОДОЛЖЕНИЕ)

Шаблон Session Facade («фасад сеанса») определяет высокоуровневый компонент, который содержит и централизует сложные взаимодействия между низкоуровневыми бизнес компонентами.

Session Facade может быть реализован как сеансовый компонент EJB или простой сессионный бин. Он обеспечивает клиентов одним интерфейсом для поддержки функциональности приложения или подмножества объектов приложения.

ПАТТЕРН SESSION FACADE (СХЕМА)

Объект Session Facade также может действовать

как Mediator между бизнес объектами, отделяя их программные интерфейсы друг от друга.

В нашем случае, когда мы не используем EJB компоненты, наши службы будут реализованы в виде POJO далеко не идеально, но достаточно, чтобы показать возможность реализации.

ПАТТЕРН SESSION FACADE (ОКОНЧАНИЕ)

Объекты Session Facade управляют запросами, приходящими от презентационного узла и для выполнения бизнес логики приложения могут вызывать другие объекты Enterprise Session Beans, которые выполняют транзакции, тогда как Entity компоненты представляют бизнес данные в виде набора атрибутов.

Session Facade абстрагирует взаимодействия бизнес объектов и обеспечивает уровень служб, предоставляющий только необходимые интерфейсы. Таким образом, он скрывает от клиента (от презентационного слоя, в данном случае) сложность взаимоотношений между участниками этих взаимодействий.

Session Facade управляет взаимодействиями между объектами бизнес данных и бизнес служб, участвующих в рабочем процессе, и инкапсулирует связанную с этим бизнес-логику.

ПАТТЕРН DATA ACCESS OBJECT (DAO)

Отделяет обработку данных, от механизма доступа к данным

Адаптирует API доступа к специфическим ресурсам данных клиентского интерфейса

Паттерн DAO позволяет модифицировать механизм доступа к данным независимо от кода, который использует данные, а также обеспечивает:

Абстрагирование и инкапсуляцию механизмов доступа к данным

Большую гибкость при разработке

Независимость от способа доступа, предоставленного вендором

Независимость реализации доступа к ресурсам

Легкую миграция на JPA

Улучшение расширяемости

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

ОБЪЕКТЫ, РЕАЛИЗУЮЩИЕ ПАТТЕРН DAO ОБЫЧНО РАЗМЕЩАЮТСЯ НА БИЗНЕС УЗЛЕ

DataAccessObject

является первичным объектом данного паттерна.

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

ПАТТЕРН DAO (ПРОДОЛЖЕНИЕ)

Паттерн DAO попадает в категорию структурных шаблонов, поскольку он описывает – как один бизнес объект может быть разделен на несколько объектов, выполняющих разные роли (объекты извлекающие данные из источников и объекты, использующие эти данные), а также описывает - как эти объекты могут быть скомбинированы для формирования большого модуля бизнес узла.

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

В каталоге шаблонов J2EE DAO помещен в группу шаблонов осуществляющих интеграцию, поскольку он используется для интеграции бизнес объектов с различными типами источников данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]