Как связаны EJB и JPA? - программирование
Подтвердить что ты не робот

Как связаны EJB и JPA?

Я читаю EJB 3 в книге действий, и у меня есть следующий вопрос:
Является ли POJO вы пишите и комментируете с @Entity и т.д. Также тип сущности EJB?

Я не понимаю, что JPA имеет отношение к EJB. Разве JPA не является собственной спецификацией сейчас? Объекты также содержатся в собственном контейнере сохранения. Они говорят о EJB 3 Java Persistence API и т.д., Но я не понимаю, какие объекты имеют отношение к EJB.

4b9b3361

Ответ 1

JPA была разработана для замены объекта EJB2 beans и началась как часть спецификации EJB3.

Поскольку имеет смысл также использовать JPA вне контейнера EJB, у него теперь есть своя спецификация, но она по-прежнему связана с EJB3, поскольку совместимый контейнер EJB3 должен обеспечить реализацию JPA, которая интегрируется в обработку транзакций контейнер.

Ответ 2

До версии 2.1 спецификаций EJB класс bean должен был реализовать интерфейс javax.ejb.EntityBean и предоставить реализацию для шаблонных методов, таких как ejbLoad, ejbStore, ejbActivate и ejbPassivate.

EJB 3.0 принял спецификацию JPA. Само понятие сущности bean было заменено более простым понятием сущности JPA. Чтобы создать такой объект, не требуется реализация интерфейса или методы плиты котла. Объект представляет собой POJO с аннотацией @Entity.

Таким образом, на практике использование EJB "entity bean" в приложениях Java EE мертво (похоронено под JPA) с EJB 3.

Ответ 3

Вы правы. JPA имеет больше общего, чем поддержка EJB. Именно по этой причине JPA стала отдельной JSR или спецификацией. EJB использует или позволяет использовать JPA в своей спецификации, просто потому, что JPA является хорошим стандартом. Теперь вы можете переключаться между поставщиками JPA, не меняя свой код, если он правильно разработан.

Спецификация EJB может использоваться независимо от JPA (хотя JPA была включена как часть спецификации EJB), а также JPA может использоваться для многих других материалов вне спецификации EJB. Тем не менее, спецификация EJB позволяет легко впрыскивать JPA Entitiy Manager (и его использование) в beans, что упрощает программирование. Конечно, теперь это можно легко достичь с помощью нового JSR на CDI: -).

Все сервер приложений, поддерживающий спецификацию EJB, также должны поддерживать JPA. Вы можете увидеть этот поток для получения дополнительной информации.