Каква е разликата между EJB, хибернация, пролет и JSF? [затворено]

Много съм объркан с различните рамки на Java. Искам да създам проект за java сървър, за да предложа някаква уеб услуга Restful, но наистина не знам коя рамка да избера. Каква е разликата между JSF, EJB, Hibernate и Spring? Моля, помогнете ми да ги разбера по-добре.


person user261002    schedule 25.11.2010    source източник
comment
@MichaelLaffargue В зависимост от това къде се храните, може да няма толкова голяма разлика между бургер и кон, колкото си мислите.   -  person Jason C    schedule 25.02.2014
comment
@JasonC Имаш право ;)   -  person Michael Laffargue    schedule 25.02.2014


Отговори (4)


Това са рамки за различни слоеве.

  • JSF е за слоя изглед (уеб), това е компонентно ориентирана рамка (всяка част от страница е компонент, има състояние) като Wicket или Tapestry и за разлика от рамки за действие като Spring MVC, Struts или райета

    Книги: Core JavaServer Faces (3-то издание)
    Уроци: CoreServlets.com

  • EJB 3.x е контейнер, който е част от стека JavaEE. Той прави неща като инжектиране на зависимости и управление на жизнения цикъл на боб. Обикновено се нуждаете от пълен JavaEE сървър за приложения за EJB3

    Уроци: Урок за JavaEE 6: EJB
    Книги: EJB 3 в действие

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

    Онлайн справочници (отлични)
    Книги: Не можах да намеря добра книга на английски за Spring 3.x, въпреки че няколко са в процес на създаване

  • Hibernate беше първият голям ORM (Object relational mapper) на платформата Java и като такава силно вдъхнови JPA (който е част от стандарта EJB3, но може да се използва без EJB контейнер). Бих предложил да кодирате срещу JPA и да използвате само хибернация като доставчик, по този начин можете лесно да превключите към EclipseLink и т.н.

    Книги: Pro JPA 2: Овладяване на Java™ Persistence API (не е специфично за хибернация),
    Постоянство на Java с хибернация (остарява малко)

person Sean Patrick Floyd    schedule 26.11.2010
comment
За да посочим изрично, Spring просто се нуждае от JVM, докато EJB се нуждае от пълен сървър за приложения - person boardtc; 23.02.2012
comment
@boardtc Spring се нуждае поне от контейнер за сервлети, нали? AFAIK, Spring използва вграден екземпляр на Tomcat. - person Utku; 28.04.2017
comment
@Utku Spring MVC прави, но Spring е много повече от MVC рамка - person Sean Patrick Floyd; 28.04.2017

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

Ако обаче искате да правите REST, най-важният стандарт за вас е JAX-RS. Можете да го използвате или в рамките на Spring, или с EJB. За постоянство можете да използвате Hibernate или внедряването на JPA на EJB контейнер като Glassfish

person Michael Borgwardt    schedule 25.11.2010

EJB е Enterprise Java Bean – вижте връзката за описание, но по същество това е Java „по подразбиране“ начин за писане на корпоративно приложение.

Hibernate е ORM рамка; начин за картографиране на обектите/класовете във вашето приложение към таблиците на базата данни. Това е свързано с това как запазвате данните си в база данни.

Spring е контейнер за IoC/Dependency Injection, който предоставя много полезни и добре тествани абстракции, за да улесни живота ви. Spring е нещо като своя собствена рамка за приложения.

JSF е Java Server Faces, технология за преглед на Java уеб приложения.

Бихте използвали или EJB, ИЛИ Spring. Можете да използвате Hibernate като ваше изпълнение на постоянство, ако желаете, с което и да е; не е нужно да правите това. За уеб услугите на RESTFul всъщност не се нуждаете от JSF.

Хората са много доволни от пролетта - препоръчвам да използвате това...

person hvgotcodes    schedule 25.11.2010

  • JSF - Лица на Java сървър -> Уеб потребителски интерфейс
  • EJB - Enterprise Java Beans -> Компоненти, които са със състояние (ориентирани към сесия) или без състояние (услуги), управлявани от съобщения (асинхронни)
  • Hibernate - Persistence Service като други реализации на JPA (Eclipselink, OpenJPA или Toplink)
  • Spring е друг свят без EJB, който може да интегрира други технологии за изглед. Доста е гъвкав.

Трябва да решите между JEE5/6 и пролетта. Вземете червеното или синьото хапче, не използвайте и двете.

person stacker    schedule 25.11.2010
comment
Добър преглед. Но относно червените или сините хапчета: Spring се интегрира добре с почти всяка друга технология, включително EJB static.springsource.org/spring/docs/3.0.x/ - person Sean Patrick Floyd; 26.11.2010