Компоненты-сущности. Введение в компоненты-сущности. Крупные деловые объекты. Рост популярности компонентов-сущностей, страница 13

·  Прикладной уровень. На этом уровне сосредотачиваются функциональные возможности, специфические для данного приложения. Здесь располагаются сервлеты приложения. В прикладном уровне выделяется также уровень интерфейса пользователя, содержащий, в частности, страницы JSP и HTML.

·  Деловой уровень. Этот уровень содержит два подуровня: деловых сущностей и деловых служб. Подуровень деловых сущностей содержит подсистемы компонентов-сущностей, а подуровень деловых служб — подсистемы сеансовых компонентов. Если мы решим инкапсулировать взаимодействия с базой данных в зависимые объекты или компоненты JavaBeans (с доступом из компонента-сущности с персистентностью, управляемой компонентом, или непосредственно из сервлета), эти классы будут располагаться на отдельном подуровне персистентности.

·  Связующий уровень. Этот уровень содержит прикладные интерфейсы (API) сторонних разработчиков и т.д. В нашем практическом исследовании он не используется.

Графически это многоуровневое представление показано на рис. 13.23.

Иногда бывает трудно провести различие между разбиением по уровням и распределением по пакетам. Многоуровневое представление изображает логическую структуру приложения, а пакетное представление — физическую.

Рассмотрим какую-нибудь структуру пакетов, обычно применяемую в приложениях на Java, например, иерархию пакетов com.awp.homedirectи т.д. Хотя такая структура хорошо изображает разделение приложения на пакеты, она не дает четкого представления о его логической организации. Например, физическая иерархия пакетов не может выразить возможностей быстрого совершенствования приложения путем надстраивания новых уровней компонентов или замены существующих.

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

Например, в приложении HomeDirect пакет com.axvp.homedirect.vjeb, который содержит все сервлеты, располагается на прикладном уровне. Аналогично, пакет docroot, содержащий компоненты JSP, также находится на прикладном уровне. Пакет com.amp.homedirect.ejb.controL, который содержит подсистему управляющих сеансовых компонентов, находится на подуровне деловых служб делового уровня. Остальные пакеты в составе com.awl.homedirect.ejbотображаются на подуровень деловых сущностей и т.п.

Имея модель такого многоуровневого представления, легко установить, что, если потребуется новый формат представления или подгонка приложения под определенного клиента, это можно легко осуществить, внеся изменения в прикладной уровень.

Резюме

Хотя компоненты-сущности распространены не так широко, как сеансовые компоненты, недавние усовершенствования в J2EE должны способствовать их применению. Моделирование компонентов-сущностей в UML аналогично моделированию сеансовых компонентов и выполняется с помощью подсистем, классов, интерфейсов, методов, полей и отношений.

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

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