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