Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СИТ - 18 вопросов.docx
Скачиваний:
8
Добавлен:
08.11.2019
Размер:
103.77 Кб
Скачать
  1. Сущностные (entity) компоненты, жизненный цикл, pool соединений. Общие принципы реализации. Особенности, методы entity компонент их назначение и использование.

Entity комп-ты явл-ся объектным предст-ем записи в реляц. БД. Обычно 1 такой компонент сопост. с 1 записью в БД. Поск-ку данные одной записи д. б. доступны для неск-ких клиентов сразу, Entity Bean д. б. доступен для неск-ких клиентов и, след-но, не может иметь состояния, относящегося к конкретному клиенту. Каждому Entity-бину соответствует свой первичный ключ, по которому он может быть однозначно определен клиентом. Также Entity-бин имеет всегда какое-либо состояние (набор величин атрибутов, определяющих данный Entity-бин), к-е м. б. зафиксировано и сохранено, а затем и восстановлено.

Жизненный цикл Entity-бина состоит из трех состояний:

а) Бин не существует;

б) Бин находится в "обобщенном" (pooled) режиме, куда сервер приложений по спецификации переводит набор бинов, задавая им метод setEntityContext(). Таким образом, в этом состоянии бин получил кое-какие признаки своего класса, но ещё не идентифицирован с определенным полем в СУБД;

в) Бин находится в "готовом" (ready) режиме, он идентифицирован с конкретными данными в базе данных.

Реализация бина.

Рассмотрим Entity-бин BookEJB. Он реализует набор пар get/set, которые получают значения его полей. Также реализованы методы управления персистентностью:

а) ejbCreate(BookPK BookPK, :) Создание экземпляра бина в базе.

б) ejbRemove() Удаление экземпляра бина из базы по первич. ключу.

в) Методы ejbLoad() и ejbStore(). Им соответствуют методы selectRow и updateRow соответственно в классе BookDAO. При указании типа транзакции required над бизнес-методом бина, перед заданием переменной и после её получения контейнер автоматически вызывает эти методы для чтения и сохранения состояния бина из базы.

г) BookPK BookPK ejbFindByPrimaryKey(BookPK BookPK) Нахождение экземпляра бина в базе.

д) getDBConnection Получ. соединения к СУБД из пула соед-й EJB-конт-ра.

Базовым классом для класса entity-компонента является класс javax.ejb.EntityBean.

Кроме вышеперечисленный, интерфейс EntityBean содержит следующие методы:

setEntityContext() – устанавливает контекст компонента. Контейнер использует этот метод для передачи ссылки на интерфейс EntityContext экземпляру компонента. Этот интерфейс содержит методы, которые позволяют получить доступ к свойствам среды исполнения компонента;

unsetEntityContext() – вызывается контейнером перед тем, как происходит уничтожение текущего экземпляра entity-компонента;

ejbActivate() – уведомляет компонент о том, что он только что был активизирован;

ejbPassivate() – уведомляет компонент о том, что готовится его деактивация, то есть экземпляр будет отсоединен от конкретного entity-объекта (от конкретных данных в базе данных) и возвращен в пул доступных экземпляров;

Итого: каждый entity-бин должен обладать следующими характеристиками:

К еntity-бинам может обращаться одновременно большое количество пользователей.

Entity-бины могут участвовать в транзакциях.

Entity-бины представляют данные в структуре домена.

Entity-бины перманентны. Они существуют до тех пор, пока существуют данные в структуре домена.

Entity-бины не подвергаются влиянию системных сбоев. Клиент не теряет данные в результате сбоя или отключения сервера EJB.

Entity-бины имеют постоянные объектные ссылки, которые содержат неизменяемый ключ данного бина.

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