我对不同的java框架非常困惑。我想创建一个java服务器项目来提供一些Restful web服务,但我真的不知道应该选择哪个框架。 JSF,EJB,Hibernate和Spring有什么区别?请帮助我更多地了解它们。
答案 0 :(得分:54)
这些是不同图层的框架。
JSF 用于视图(web)层,它是一个面向组件的框架(页面的每个部分都是一个组件,它有状态),如Wicket或Tapestry,与Action不同Spring MVC,Struts或Stripes等框架
EJB 3.x 是一个容器,它是JavaEE堆栈的一部分。它执行依赖注入和bean生命周期管理之类的操作。您通常需要EJB3的完整JavaEE应用程序服务器
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)
但是,如果你想做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)
您必须在JEE5 / 6和spring之间做出决定。服用红色或蓝色药丸不要同时使用。