EJB、冬眠、弹簧和 JSF 有什么区别?[已关闭]

2022-09-01 02:02:34

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


答案 1

这些是不同层的框架。

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

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

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

    教程:JavaEE 6 教程:EJB
    书籍:EJB 3 在行动

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

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

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

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


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

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


推荐