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

34. Организация и особенности entity компонент с сохранением (персистентностью) управляемым контейнером (cmp).

Под сохранением (Persistence) понимается протокол передачи состояния компонента между экземпляром компонента и сопоставленной с ним базой данных. Разделяют персистентность, управляемую контейнером (Container-managed persistence) и персистентность, упр-ю самим бином (Bean-managed persistence). Отличие сост. в том, кто ответственен за сохранение состояния бина: в 1м сл-е это контейнер EJB, во втором - сам бин. Первое более универсально и требует меньших затрат от разработчика EJB, второе требует написания отдельного кода в бине и используется, очевидно, когда 1й способ по каким-либо причинам (скорость, необходимость спец. функциональности при сохранении состояния бина, etc.) разработчика не устраивает. Entity-Компонент с BMP содержит код, явно управляющий доступом к базе данных. В случае управления сохранения состоянием, выполняемым контейнером (CMP), компонент не содержит кода доступа к базе данных. Вместо этого, Компонент полностью полагается на Контейнер EJB.

СМР имеет много преимуществ по сравнению с BMP.

Ее проще использовать - разработчик Компонента сам не обращается к методам упр-ния БД.

Управление сохранением состояния м. б. изменено без изменения и перекомпиляции исх. кода Компонента.

Entity c CMP не содержит реализации методов поиска, эти реализации обеспечивает контейнер.

Поля, сохранение состояния которых обеспечивает контейнер, д.б. объявлены как public.

Класс такого компонента соержит реализации методов ejbActivate(), ejbPassivate(), ejbLoad(), ejbStore(), ejbRemove(), ejbEntityContext(), unsetEntityContext().

Реальная выгода от CMP состоит в том, что компонент может портироваться под любую систему постоянного хранения. Если вы думали об этом, CMP работает потому, что Контейнер генерирует весь код, необходимый для переноса состояния между EJB объектом и постоянным хранилищем. Это означает, что Контейнер знает, как взаимодействовать с таким специальным хранилищем. Реализация EJB Контейнера поддерживает различные хранилища, обычно все основные RDBMS, такие как Oracle, DB2, MySQL и т.п. Так как логика сохранения не закодирована жестко в CMP entity bean, а она предоставляется Контейнером, вы можете использовать тот же самый бинарный компонент в разных рабочих средах и все еще пользоваться поддержкой хранения объекта, предоставляемой Контейнером.

35. Организация и особенности entity компонент с сохранением (персистентностью) управляемым компонентом (bmp).

Под сохранением (Persistence) понимается протокол передачи состояния компонента между экземпляром компонента и сопоставленной с ним базой данных. Разделяют персистентность, управляемую контейнером (Container-managed persistence) и персистентность, упр-ю самим бином (Bean-managed persistence). Отличие сост. в том, кто ответственен за сохранение состояния бина: в 1м сл-е это контейнер EJB, во втором - сам бин. Первое более универсально и требует меньших затрат от разработчика EJB, второе требует написания отдельного кода в бине и исп-тся, очевидно, когда 1й способ по каким-либо причинам (скорость, необх-сть спец. функц-сти при сохр-и сост-я бина, etc.) разраб-ка не устр-ет. Entity-Компонент с BMP содержит код, явно управляющий доступом к базе данных. В случае управления сохранения состоянием, выполняемым контейнером (CMP), компонент не содержит кода доступа к базе данных. Вместо этого, Компонент полностью полагается на Контейнер EJB.

Если вы используете BMP, логика хранения (например SQL выражения, если вы программируете для специфической RDBMS) будет встроена в ваш компонент, что затруднит использование другого хранилища. Вы исп-те BMP, если ваш entity bean связан с нек-й системой, не поддерживаемой платформой J2EE (например, это CICS приложение в IBM майнфрейме) или по другим особым причинам.

Особенности BMP:

Обычно поля объявлены, как private, а не public.

Необходимо написать реализации методов ejbLoad() и ejbStore().

Должна присутствовать реализация всех методов поиска.

Entity с BMP должен реализовывать метод ejbRemove().

Каждый метод, имеющий отношение к БД должен содержать соответствующий код

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