EJB,hibernate,spring和JSF有什么区别? [关闭]

问题描述 投票:38回答:4

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

java hibernate spring jsf ejb
4个回答
54
投票

这些是不同层的框架。

  • JSF用于视图(web)层,它是面向组件的框架(页面的每个部分都是一个组件,它具有状态),如Wicket或Tapestry,与Spring框架,如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(不是特定于hibernate的), Java Persistence with Hibernate(变得有点旧)

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

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


5
投票

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

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

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

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

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

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


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

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

© www.soinside.com 2019 - 2024. All rights reserved.