我对不同的Java框架很困惑。我想创建一个Java服务器项目来提供一些Restful web服务,但我真的不知道应该选择哪个框架。JSF、EJB、Hibernate和Spring之间有什么区别?请帮助我更好地了解它们。
这些是针对不同层的框架。
JSF 是用于视图(Web)层的,它是一个组件导向的框架(页面的每个部分都是一个组件,它有状态),类似于 Wicket 或 Tapestry,不同于像 Spring MVC、Struts 或 Stripes 这样的 Action 框架。
EJB 3.x 是 JavaEE 技术栈中的一个容器。它可以执行依赖注入和 Bean 生命周期管理等操作。通常需要完整的 JavaEE 应用服务器来运行 EJB3。
Spring 也是一个容器,但 Spring 可以运行在任何 Java 代码中(简单的主类、小程序、Web 应用程序或 JavaEE 企业应用程序中)。Spring 几乎可以做到 EJB 可以做的所有事情,并且还可以做更多的事情,但我认为它最出名的是依赖注入和非侵入式事务管理。
在线参考(非常好)
书籍:我找不到一本关于 Spring 3.x 的好英文书,尽管有几本正在制作中。
Hibernate 是 Java 平台上第一个大型 ORM(对象关系映射器),因此极大地启发了 JPA(它是 EJB3 标准的一部分,但可以在没有 EJB 容器的情况下使用)。我建议针对 JPA 进行编码,并仅使用 hibernate 作为提供程序,这样您就可以轻松地切换到 EclipseLink 等。
书籍:Pro JPA 2:掌握 Java™ 持久性 API(不是专门针对 hibernate 的),
Java Persistence with Hibernate(有点过时)
然而,如果您想要进行REST,则对您最重要的标准是JAX-RS。您可以在Spring框架内或者与EJB一起使用它。对于持久性,您可以使用Hibernate,或者使用类似Glassfish的EJB容器的JPA实现。
EJB是企业Java Bean,请参见链接以了解其描述,但基本上它是编写企业应用程序的“默认”Java方法。
Hibernate是ORM框架;一种将应用程序中的对象/类映射到数据库表的方式。它与如何将数据持久化到数据库相关。
Spring是IoC /依赖注入容器,提供许多有用且经过良好测试的抽象,使您的生活更加轻松。Spring有点像自己的应用程序框架。
JSF是Java Server Faces,是用于Java Web应用程序的视图技术。
您可以使用EJB或Spring。如果您愿意,您可以在任何一个中使用Hibernate作为持久化实现;您不需要这样做。对于RESTful web服务,您不需要JSF。
人们非常喜欢Spring-我建议使用它...
你必须在JEE5/6和spring之间做出选择。要么选择红色药丸,要么选择蓝色药丸,不要同时使用两者。