integracion example con aprender java hibernate spring jsf ejb

java - example - spring hibernate sessionfactory



¿Cuál es la diferencia entre EJB, Hibernate, Spring y JSF? (4)

Estoy muy confundido con diferentes marcos de Java. Quiero crear un proyecto de servidor Java para ofrecer un servicio web tranquilo, pero realmente no sé qué marco debería elegir. ¿Cuál es la diferencia entre JSF, EJB, Hibernate y Spring? Por favor, ayúdame a entenderlos más.


EJB es una Enterprise Java Bean : consulte el enlace para obtener una descripción, pero básicamente es la forma Java ''predeterminada'' de escribir una aplicación empresarial.

Hibernate es un marco de ORM; una forma de asignar los Objetos / Clases en su aplicación a las tablas de la base de datos. Está relacionado con la forma en que persisten sus datos en una base de datos.

Spring es un contenedor de IoC / Dependency Injection que proporciona muchas abstracciones útiles y bien probadas para facilitarle la vida. Spring es algo así como su propio marco de aplicación.

JSF es Java Server Faces, una tecnología de visualización para aplicaciones web Java.

Utilizaría EJB O Spring. Puede usar Hibernate como su implementación de persistencia, si lo desea, con cualquiera; no necesitas hacer esto Para los servicios web RESTFul, realmente no necesita JSF.

La gente está muy contenta con Spring. Recomiendo usar eso ...


Estos son marcos para diferentes capas.

  • JSF es para la capa de visualización (web), es un marco orientado a componentes (cada parte de una página es un componente, tiene estado) como Wicket o Tapestry, y a diferencia de marcos de acción como Spring MVC, Struts o Stripes

    Libros: Core JavaServer Faces (3ª Edición)
    Tutoriales: CoreServlets.com

  • EJB 3.x es un contenedor que forma parte de la pila JavaEE . Hace cosas como la inyección de dependencia y la administración del ciclo de vida del frijol. Por lo general, necesita un servidor de aplicaciones JavaEE completo para EJB3

    Tutoriales: JavaEE 6 Tutorial: EJB
    Libros: EJB 3 en acción

  • Spring también es un contenedor, pero Spring puede ejecutarse en cualquier código de Java (una clase principal simple, un applet, una aplicación web o una aplicación empresarial JavaEE). Spring puede hacer casi todo lo que EJB puede hacer y mucho más, pero yo diría que es más famoso por la inyección de dependencias y la administración de transacciones no intrusiva

    Referencia en línea (excelente)
    Libros: No pude encontrar un buen libro de inglés en Spring 3.x, aunque hay muchos en preparación

  • Hibernate fue el primer gran ORM (asignador relacional de objetos) en la plataforma Java, y como tal ha inspirado en gran medida JPA (que es parte del estándar EJB3 pero puede ser utilizado sin un contenedor EJB). Sugeriría la codificación contra JPA y solo usar hibernate como proveedor, de esa manera usted puede cambiar fácilmente a EclipseLink, etc.

    Libros: Pro JPA 2: Dominio de la API de persistencia de Java ™ (no específica de hibernación),
    Persistencia de Java con Hibernate (poniéndose un poco viejo)


  • JSF - Caras del servidor Java -> Interfaz de usuario web
  • EJB - Enterprise Java Beans -> Componentes que son Stateful (sessioen oriented) o statles (services), message driven (asincrónico)
  • Hibernate - Servicio de persistencia como otras implementaciones de JPA (Eclipselink, OpenJPA o Toplink)
  • Spring es otro mundo sin EJB, que es capaz de integrar otras tecnologías de visualización. Es bastante flexible.

Tienes que decidir entre JEE5 / 6 y la primavera. Tome la píldora roja o azul, no use ambas.


  • JSF: un marco de GUI: no necesita esto si solo quiere implementar un backend
  • EJB: un estándar para componentes distribuidos, solía ser terriblemente complejo, pero la versión 3 del estándar es bastante fácil de usar. Esto podría ser parte de tu solución.
  • Hibernate: un marco de mapeo relacional de objetos. Sirvió de inspiración para el estándar JPA (Java Persistence Architecture), que ahora es compatible tanto con Hibernate como con EJB.
  • Spring: un framework de aplicaciones que hace todo tipo de cosas, entre ellas la inyección de dependencias, las GUI web y AOP.

Sin embargo, si quiere hacer REST, entonces el estándar más importante para usted es JAX-RS . Puede usarlo dentro del marco Spring o con EJB. Para persistencia, puede usar Hibernate, o la implementación JPA de un contenedor EJB como Glassfish