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

时间:2010-11-25 22:37:56

标签: java hibernate spring jsf ejb

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

4 个答案:

答案 0 :(得分:54)

这些是不同图层的框架。

  • JSF 用于视图(web)层,它是一个面向组件的框架(页面的每个部分都是一个组件,它有状态),如Wicket或Tapestry,与Action不同Spring MVC,Struts或Stripes等框架

    图书:Core JavaServer Faces (3rd Edition)
    教程:CoreServlets.com

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

    教程:JavaEE 6 Tutorial: EJB
    图书:EJB 3 in Action

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

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

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

    图书:Pro JPA 2: Mastering the Java™ Persistence API(不是特定于休眠的),
    Java Persistence with Hibernate(变得有点旧)

答案 1 :(得分:7)

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

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

答案 2 :(得分:4)

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

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

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

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

您可以使用EJB OR Spring。您可以使用Hibernate作为持久性实现,如果您愿意,可以使用;你不需要这样做。对于RESTFul webservices,您实际上并不需要JSF。

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

答案 3 :(得分:2)

  • JSF - Java Server Faces - >网络用户界面
  • EJB - Enterprise Java Bean - >有状态(面向会话)或无状态(服务),消息驱动(异步)的组件
  • Hibernate - 像其他JPA实现一样的持久性服务(Eclipselink,OpenJPA或Toplink)
  • Spring是另一个没有EJB的世界,它能够集成其他视图技术。它非常灵活。

您必须在JEE5 / 6和spring之间做出决定。服用红色或蓝色药丸不要同时使用。