Так как я уже затрагивал тему EJB3 в уроках, то решил рассмотреть его более детальней.
Немного о EJB
EJB (Enterprise Java Beans) – это фреймворк для построение бизнес-логики приложения.
Сервер приложений J2EE состоит из двух основных элементов:
WEB-Container – (JSP, JSF и т.д.) все что дает конечный вид пользователю, а точней пользовательский интерфейс.
EJB-Container – используется для написания бизнес-логики.
С точки зрения EJB – это технология, предоставляющая множество готовых решений (управление транзакциями, безопасность, хранение информации и т.п.) для вашего приложения.
EJB делится на три типа компонентов
1. Session beans – используется для построения бизнес-логики, которая может быть вызвана программным клиентом через локальный, удаленный или веб-интерфейс обслуживания клиентов.
Для доступа к приложению, развернутого на сервере, клиент вызывает методы сессионного компонента. Сессионный компонент выполняет работу для своего клиента, защищая его от сложности, выполняя бизнес-задач внутри сервера.
Существует 2 типа session-beans: stateless и stateful.
Stateful – автоматически сохраняют свое состояние между разными клиентскими вызовами.
Stateless – используются для реализации бизнесс-процессов, которые могут быть завершены за одну операцию.
2. Message-Driven beans – компонент является корпоративным компонентом, который позволяет Java EE приложениям обрабатывать сообщения асинхронно.
Этот тип бинов обычно действует в качестве слушателя JMS-сообщения, который похож на слушателя событий, но получает JMS-сообщений вместо событий. Сообщения могут быть отправлены на любой компонент Java EE (клиентское приложение, другой компонент, или веб-компонент) или JMS приложение или систему, которая не использует Java EE технологий.
Message-Driven beans может обрабатывать не только JMS сообщения но и других видов сообщений.
На схеме выше можно наблюдать общение между приложением и сервером с помощью очереди куда поступают сообщения.
3. Entities – это сущности каких то объектов и в EJB оно является хранилищем данных на период жизненного цикла Entity.
Entities является свое-родным отображением таблиц в БД.
Одним из главным достоинством EJB3 стал новый механизм работы с persistence, он дает возможность автоматически сохранять объекты в реляционной БД используя технологию ORM.
Для работы с entity был создан JPA (Java Persistence API).
JPA определяет стандарт для:
1) конфигурации маппинга сущностей приложения и их отображения в таблицах БД;
2) EntityManager API – позволяет выполнять CRUD (create, read, update, delete) операции над сущностями;
3) Java Persistence Query Language (JPQL) – для поиска и получения данных приложения;
Основные аннотации EJB3
@EJB – помечается bean, который мы собираемся использовать.
@Stateless – говорит контейнеру, что класс будет stateless session bean. Для него контейнер обеспечит безопасность потоков и менеджмент транзакций.
@Local – относится к интерфейсу и говорит, что bean реализующий интерфейс доступен локально.
@Remote – относится к интерфейсу и говорит, что bean доступен через RMI (Remote Method Invocation).
@Stateful – говорит контейнеру, что класс будет stateful session bean.
@Remove – метод, помеченный как Remove говорит контейнеру, что после его исполнения нет больше смысла хранить bean, т.е. его состояние сбрасывается. Это бывает критично для производительности.
@Entity – говорит контейнеру, что класс будет сущностью БД.
@Table(name=”<name>”) – указывает таблицу для маппинга БД.
@Id – указывает уникальный идентификатор сущности который будет ключом в БД.
@Column – указывает параметры колонки в БД включая имя колонки в БД.
@WebService – говорит, что интерфейс или класс будет представлять web-сервис.
Правила создания session bean
В качестве session bean может выступать обычный класс Java, но он должен удовлетворять следующим условиям:
1. Он должен иметь как минимум один метод;
2. Он не должен быть абстрактным;
3. Он должен иметь конструктор по-умолчанию;
4. Методы не должны начинаться с “ejb” (например ejbBean, ejbGoAtHome)
5. Свойства класса должны быть объявлены примитивами или реализовывать интерфейс Serializable.
Жизненный цикл EJB3
У stateless и MDB бинов существует 2 события жизненного цикла, которые мы можем перехватить. Это создание и удаление бина.
Метод, который будет вызываться сразу после создании бина помечается аннотацией @PostConstruct, а перед его удалением – @PreDestroy.
Stateful бины обладают помимо рассмотреных выше еще 2 событиями:
1) При активации @PostActivate;
2) При деактивации @PrePassivate.
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
8 комментариев к статье "Введение в основы EJB3"
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
Забыли про тип сессионного бина Singleton.
В этом уроке я пытался не затрагивать паттерны, так как это основы, только самое основное.
Классная статья.Спасибо, все разложено как по полкам.
1. не совсем понял разницу между Stateful и Stateless
2. Java Persistence API – это аналог Hibernate? Т.е. можно вместо JPA использовать Hibernate и наоборот?
Не совсем. JPA – это спецификация от Java. Она представляет собой набор интерфейсов для организации работы с данными. Hibernate – это уже одна из реализаций JPA. Можно провести аналогию с интерфейсом List(это JPA) и его реализацией ArrayList(это Hibernate). Использую JPA, вы лишаете себя некоторых возможностей, характерных только для Hibernate, однако получаете большую гибкость в разработке, так как ваш код будет работать на любых реализация стандарта JPA
Спасибо! Освежил память.
Спасибо
Спасибо за разъяснения. Актуально и сейчас, т.к. есть системы с классической реализацией EJB , которые нужно сопровождать.