Rambler's Top100IT • archiv

rus / eng | Логин | Комментарий к колонке | Печать | Почта | Клуб




Колонки


Методология построения корпоративных информационных систем на основе технологии EJB. Часть 8

 
(Евгений Игумнов)

Атрибут транзактивности бина

Атрибуты транзактивности бина нужны только в том случае если транзакции управляются самим бином. Бывают следующие транзактивные атрибуты Required, RequiresNew, Mandatory, NotSupported, Supports, Never. Один из этих атрибутов вы указываете в XML описании вашего бина на каждый ваш бизнес метод или на все методы сразу. На сама деле этот атрибут говорит контейнеру, что делать с транзактивным контекстом в случае вызова бизнес метода на бине. Например: если был вызван метод не в транзакции, то начать новую транзакцию или если если вызван в транзактивном контексте, то создать свою транзакцию и выполнять метод в ней. И таких вариаций много. Для полного описания обратитесь к спецификации или к документации компании у который вы купили сервер приложений.

Четыре уровня изоляции транзакции

Обычно технологию EJB применяют для систем, к которым предъявлены высокие требования. И волей-неволей Вам придется столкнутся с проблемой изоляции транзакций

TRANSACTION_READ_UNCOMMITED
С таким уровнем изоляции транзакции вы будете видеть изменения, которые происходят в соседней транзакции до того как она либо успешно завершится или откатится. Эта проблема называется грязным чтением.
TRANSACTION_READ_COMMITED
Этот уровень Вас избавит от грязного чтения.
TRANSACTION_REPEATABLE_READ
Этот уровень вас избавит от проблемы неповторимого чтения. Это возникает тогда, когда вы во время транзакции считали какую-то строчку, а через некоторое время считали ее еще раз в той же транзакции и обнаружили, что она была изменена в другой транзакции. С таким уровнем изоляции вы избавитесь от этой проблемы. Просто, что вы будете считывать в одной транзакции будет блокировано на измненние в другой пока вы не закончите первую.
TRANSACTION_SERIALIZABLE
Этот уровень избавит от фантомной проблемы. Предположим в одной транзакции вы запросили список строк и через некоторое время сделали повторный запрос и получили на одну строку больше. Для того что бы этого не случилось используйте этот уровень изоляции транзакции.
Следует помнить, чем выше уровень изоляции транзакции тем больше требует это вычислительных ресурсов у СУБД.

Жизненный цикл сущностных бинов

Жизненный цикл (ЖЦ) сущностных бинов похож на сессионный, но несколько сложнее. Жизненный цикл изображен на рис.16

Entity EJB
Рис.16

Скажу честно, что бы вы поняли, как это работает вам потребуется очень хорошо изучить архитектуру EJB, так что я в свое статье коснусь только основной мысли. В ЖЦ сущностного бина добавились два события это вызов методов ejbLoad и ejbStore, которые синхронизируют состояние бина с состоянием БД. Метод ejbLoad вызывается, когда бин попадает в транзакцию, а ejbStore когда транзакция завершается.

TOC | Часть 9 >




Справка | Условия Copyright © 1999 — 2008, IT • archiv.
В начало | Логин | Комментарий к колонке | Поиск | Почта