EJB,hibernate,spring和JSF有什么区别?

use*_*002 39 java jsf spring hibernate ejb

我对不同的java框架非常困惑.我想创建一个java服务器项目来提供一些Restful web服务,但我真的不知道应该选择哪个框架.JSF,EJB,Hibernate和Spring有什么区别?请多帮我理解一下.

Sea*_*oyd 54

这些是不同层的框架.

  • JSF是视图(网络)层,这是一个面向组件的架构(一个页面的每一个部分是一个组件,它有状态),如检票或挂毯,而不像比如Spring MVC,Struts或者条纹行动框架

    书籍: 核心JavaServer Faces(第3版)
    教程:CoreServlets.com

  • EJB 3.xJavaEE堆栈的一部分容器.它执行依赖注入和bean生命周期管理之类的操作.您通常需要EJB3的完整JavaEE应用程序服务器

    教程:JavaEE 6教程:EJB
    Books:EJB 3 in Action

  • Spring也是一个容器,但Spring可以在任何java代码(一个简单的主类,一个applet,一个web应用程序或一个JavaEE企业应用程序)中运行.Spring可以做几乎所有EJB可以做的事情以及更多,但我会说它最依赖于依赖注入和非侵入式事务管理

    在线参考(优秀)
    书籍:我在Spring 3.x上找不到一本好的英语书籍,虽然有几本正在制作中

  • Hibernate是Java平台上的第一个大型ORM(对象关系映射器),因此极大地激发了JPA(它是EJB3标准的一部分,但可以在没有EJB容器的情况下使用).我建议对JPA进行编码,只使用hibernate作为提供者,这样你就可以轻松切换到EclipseLink等.

    书籍:Pro JPA 2:掌握Java™Persistence API(不是特定于hibernate),
    Java Persistence with Hibernate(有点旧)

  • 要明确说明,Spring只需要JVM,而EJB需要一个完整的应用服务器 (9认同)
  • @Utku Spring MVC确实如此,但Spring不仅仅是一个MVC框架 (2认同)

Mic*_*rdt 7

  • JSF:GUI框架 - 如果您只想实现后端,则不需要这样做
  • EJB:分布式组件的标准,过去非常复杂,但标准的第3版非常容易使用.这可能是您解决方案的一部分.
  • Hibernate:一个对象关系映射框架.它是JPA(Java持久性架构)标准的灵感来源,现在Hibernate和EJB都支持它.
  • Spring:一个执行各种操作的应用程序框架,其中包括依赖注入,Web GUI和AOP.

但是,如果你想做REST,那么最重要的标准就是JAX-RS.您可以在Spring框架内或使用EJB.对于持久性,您可以使用Hibernate或EJB容器(如Glassfish)的JPA实现


hvg*_*des 5

EJB是一个Enterprise Java Bean,请参阅链接以获取描述,但基本上它是编写企业应用程序的“默认” java方式。

Hibernate是一个ORM框架;一种将应用程序中的对象/类映射到数据库表的方法。它与如何将数据持久保存到数据库有关。

Spring是一个IoC /依赖注入容器,它提供了许多有用且经过测试的抽象,以使您的生活更轻松。Spring有点像自己的应用程序框架。

JSF是Java Server Faces,一种用于Java Web应用程序的视图技术。

您将使用EJB或Spring。如果需要,可以将Hibernate用作持久性实现;您不需要这样做。对于RESTFul Web服务,您实际上并不需要JSF。

人们对Spring非常满意-我建议使用...