Подтвердить что ты не робот

В чем разница между EJB, hibernate, spring и JSF?

Я очень запутался в разных java-инфраструктурах. Я хочу создать проект java-сервера, чтобы предложить некоторый Restful web-сервис, но я действительно не знаю, какую структуру я должен выбрать. В чем разница между JSF, EJB, Hibernate и Spring? Пожалуйста, помогите мне понять их больше.

4b9b3361

Ответ 1

Это фреймворки для разных слоев.

  • JSF относится к слою view (web), он представляет собой компонентную структуру (каждая часть страницы является компонентом, она имеет состояние), как Wicket или Tapestry, и в отличие от Action такие как Spring MVC, Struts или Stripes

    Книги: Ядро JavaServer Faces (3-е издание)
    Учебники: CoreServlets.com

  • EJB 3.x - это контейнер, который является частью стека JavaEE. Он выполняет такие функции, как инъекция зависимостей и управление жизненным циклом bean. Обычно вам нужен полный сервер приложений JavaEE для EJB3

    Учебники: JavaEE 6 Tutorial: EJB
    Книги: EJB 3 в действии

  • Spring также является контейнером, но Spring может выполняться в любом Java-коде (простой основной класс, апплет, веб-приложение или корпоративное приложение JavaEE). Spring может делать почти все, что может сделать EJB, и многое другое, но я бы сказал, что он самый известный для инъекций зависимостей и управления неинтрузивными транзакциями

    Справочник онлайн (отлично)
    Книги: я не мог найти хорошую английскую книгу на Spring 3.x, хотя некоторые из них находятся в процессе создания

  • Hibernate был первым большим ORM (объектно-реляционным картографом) на платформе Java и, как таковой, сильно вдохновил JPA (который является частью стандарта EJB3, но может использоваться без контейнера EJB). Я бы предложил кодировать JPA и использовать только hibernate в качестве провайдера, таким образом вы можете легко переключиться на EclipseLink и т.д.

    Книги: Pro JPA 2: Освоение API Persistence Java ™ (не спящий режим),
    Сохранение Java с Hibernate (немного устаревший)

Ответ 2

  • JSF: инфраструктура графического интерфейса - вам это не нужно, если вы хотите реализовать бэкэнд
  • EJB: стандарт для распределенных компонентов, который был ужасно сложным, но версия 3 стандарта довольно проста в использовании. Это может быть частью вашего решения.
  • Спящий режим: структура объектно-реляционного отображения. Это послужило источником вдохновения для стандарта JPA (Java Persistence Architecture), который теперь поддерживается как Hibernate, так и EJB.
  • Spring: инфраструктура приложения, которая выполняет всевозможные действия, в том числе инъекции зависимостей, веб-графические интерфейсы и АОП.

Однако, если вы хотите сделать REST, то наиболее важным для вас является JAX-RS. Вы можете использовать его либо в рамках Spring, либо с помощью EJB. Для настойчивости вы можете использовать Hibernate или JPA-реализацию контейнера EJB, такого как Glassfish

Ответ 3

EJB - это Enterprise Java Bean - см. ссылку для описания, но в основном ее "стандартный" способ записи на Java приложение.

Hibernate - это ORM Framework; способ сопоставления объектов/классов в приложении с таблицами базы данных. Это связано с тем, как вы сохраняете свои данные в базе данных.

Spring представляет собой контейнер для инъекций IoC/Dependency Injection, который обеспечивает множество полезных и хорошо протестированных абстракций, чтобы сделать вашу жизнь проще. Spring похож на собственную инфраструктуру приложения.

JSF - это Java Server Faces, технология просмотра для веб-приложений Java.

Вы должны использовать EJB OR Spring. Вы могли бы использовать Hibernate в качестве реализации настойчивости, если хотите, с помощью; вам не нужно это делать. Для веб-сервисов RESTFul вам не нужен JSF.

Люди очень довольны Spring - я рекомендую использовать это...

Ответ 4

  • JSF - Лица сервера Java → Веб-интерфейс пользователя
  • EJB - Enterprise Java Beans → Компоненты с состоянием (ориентированные на sessioen) или statles (службы), управляемые сообщениями (асинхронные)
  • Hibernate - служба сохранения, как и другие реализации JPA (Eclipselink, OpenJPA или Toplink)
  • Spring - это еще один мир без EJB, который способен интегрировать другие технологии просмотра. Он прекращает гибкость.

Вы должны выбрать между JEE5/6 и spring. Возьмите красную или синюю таблетку, не пользуйтесь обоими.