Я очень запутался с различными фреймворками Java. Я хочу создать проект java-сервера, чтобы предложить какой-нибудь веб-сервис Restful, но я действительно не знаю, какую структуру мне выбрать. В чем разница между JSF, EJB, Hibernate и Spring? Пожалуйста, помогите мне понять их больше.
В чем разница между EJB, hibernate, spring и JSF?
Ответы (4)
Это фреймворки для разных слоев.
JSF предназначен для уровня представления (веб-уровня), это компонентно-ориентированная структура (каждая часть страницы является компонентом, у нее есть состояние), такая как Wicket или Tapestry, и в отличие от сред действий, таких как Spring MVC, Struts или полосы
Книги: Основные версии JavaServer Faces (3-е издание)
Учебные материалы: CoreServlets.comEJB 3.x — это контейнер, являющийся частью стека JavaEE. Он делает такие вещи, как внедрение зависимостей и управление жизненным циклом компонента. Обычно вам нужен полноценный сервер приложений JavaEE для EJB3.
Учебные пособия: Учебное пособие по JavaEE 6: EJB
Книги: EJB 3 в действииSpring также является контейнером, но Spring может работать в любом коде Java (простой основной класс, апплет, веб-приложение или корпоративное приложение JavaEE). Spring может делать почти все, что может делать EJB, и многое другое, но я бы сказал, что он наиболее известен внедрением зависимостей и ненавязчивым управлением транзакциями.
Онлайн-справочник (отлично)
Книги: Я не смог найти хорошую англоязычную книгу по Spring 3.x, хотя несколько находятся в процессе разработки.Hibernate был первым большим ORM (объектно-реляционным картографом) на платформы Java и, как таковой, вдохновил JPA (который является частью стандарта EJB3, но может использоваться без контейнера EJB). Я бы предложил кодировать против JPA и использовать только спящий режим в качестве провайдера, таким образом вы можете легко переключиться на EclipseLink и т. д.
Книги: Pro JPA 2: Mastering the Java™ Persistence API (не для спящего режима),
Java Persistence with Hibernate (немного устарел)
- JSF: структура графического интерфейса — вам это не нужно, если вы хотите реализовать только бэкэнд
- EJB: стандарт для распределенных компонентов, раньше был ужасно сложным, но версия 3 стандарта довольно проста в использовании. Это может быть частью вашего решения.
- Hibernate: структура объектно-реляционного сопоставления. Он послужил источником вдохновения для стандарта JPA (Java Persistence Architecture), который теперь поддерживается как Hibernate, так и EJB.
- Spring: платформа приложений, которая делает все, что угодно, в том числе внедрение зависимостей, веб-интерфейсы и АОП.
Однако, если вы хотите использовать REST, наиболее важным для вас стандартом является JAX-RS. Вы можете использовать его либо в среде Spring, либо с EJB. Для сохранения вы можете использовать Hibernate или реализацию JPA контейнера EJB, такого как Glassfish.
EJB — это Enterprise Java Bean -- см. ссылку для описания, но в основном это java по умолчанию. способ написания корпоративного приложения.
Hibernate — это ORM Framework; способ сопоставления объектов/классов в вашем приложении с таблицами базы данных. Это связано с тем, как вы сохраняете свои данные в базе данных.
Spring — это контейнер IoC/Dependency Injection, который предоставляет множество полезных и хорошо протестированных абстракций, облегчающих вашу жизнь. Spring — это что-то вроде собственного фреймворка для приложений.
JSF — это Java Server Faces, технология просмотра веб-приложений Java.
Вы бы использовали EJB ИЛИ Spring. Вы можете использовать Hibernate в качестве реализации постоянства, если хотите, с любым из них; вам не нужно этого делать. Для веб-сервисов RESTFul вам действительно не нужен JSF.
Люди очень довольны Spring - я рекомендую использовать его...
- JSF — Java Server Faces -> Веб-интерфейс пользователя
- EJB - Enterprise Java Beans -> Компоненты с состоянием (ориентированные на сеанс) или без состояния (сервисы), управляемые сообщениями (асинхронные)
- Hibernate — служба сохранения, как и другие реализации JPA (Eclipselink, OpenJPA или Toplink).
- Spring — это другой мир без EJB, который может интегрировать другие технологии просмотра. Это довольно гибко.
Придется выбирать между JEE5/6 и пружиной. Возьмите красную или синюю таблетку, не используйте обе.