Spring、Struts、Hibernate、JavaServer Faces和Tapestry之间有什么区别?

201

我能知道一下以下技术有什么区别吗:

  1. Spring
  2. Struts
  3. Struts 2
  4. Hibernate
  5. JavaServer Faces
  6. JavaServer Pages
  7. Tapestry

这些技术/框架是相互补充的吗?还是它们是彼此替代的选择(使用其中一个后,就不需要再使用其他的了)?

谢谢。

9个回答

267
  1. IoC容器是Spring的核心功能,用于使用依赖注入连接各种事物。Spring还提供其他服务,如事务管理和各种其他技术的无缝集成。
  2. Struts是一个基于动作的展示框架(但不要在新开发中使用)。
  3. Struts 2是上述版本(从WebWork与Struts合并创建)的动作展示框架
  4. Hibernate是一种对象关系映射工具,是一种持久化框架
  5. JavaServer Faces是基于组件的展示框架
  6. JavaServer Pages是所有提到的展示框架用于视图的视图技术。
  7. Tapestry是另一个基于组件的展示框架

因此,总结一下:

  • Struts 2、JSF、Tapestry(以及Wicket、Spring MVC、Stripes)都是展示框架,如果使用其中之一,则不使用另一个。
  • Hibernate是持久化框架,用于将Java对象持久化到关系数据库中。
  • Spring可以用于把它们全部联系在一起,并提供声明式事务管理。

我不想让事情更加混乱,但请注意,Java EE 6提供了现代化、标准化和非常好的等价框架:JSF 2.0和Facelets用于展示,JPA 2.0用于持久化,依赖注入等。对于新开发项目而言,这是一个认真考虑的选项,Java EE 6是一个出色的栈。

另请参阅

  • JEE6 vs. Spring 3 stack
  • 学习Java EE 6制作Java Web应用程序需要掌握什么?

  • 2
    我想指出,在这种比较的情况下,有些人也使用Spring这个词来指代它自己的MVC框架(在我看来比Struts好多了)。 - MetroidFan2002
    讲解得很好,但仍然太技术化了。我建议您用通俗易懂的语言来解释它。不管怎样,最后的链接已经做到了这一点。 - 0xC0DED00D
    答案确实是一个很好的起点,但可以通过解释引入的主要概念(基于请求与组件的框架、IoC容器、演示与持久性框架等)来改进。目前它需要大量的额外搜索,但仍然是一个很好的答案和出发点!点赞。 - Wouter

    19

    通常情况下,Hibernate用于处理数据库操作。它提供了丰富的数据库实用工具功能,减少了您的代码行数。特别是您需要阅读Hibernate的@注释。它是一个ORM框架和持久化层。

    Spring提供了丰富的基于注入的工作机制。目前,Spring非常著名。您还需要了解Spring AOP。在Struts和Hibernate之间有一个桥梁。主要是Spring提供这种实用工具。

    Struts2提供基于Action的编程。它提供了丰富的Struts标签。Struts证明了基于Action的编程,因此您必须维护视图的所有相关控件。

    此外,Tapestry是Java的一个不同框架。您只需处理.tml(模板文件)。您需要为任何类创建两个主要文件。一个是JAVA类,另一个是其模板。两者名称相同。Tapestry会自动调用相关的类。


    7

    您可以在这里查看概述和排名。Hibernate是一个ORM,因此您可以使用struts+Hibernate或spring+hibernate构建Web应用程序。不同的Web框架有许多替代品。


    4

    Spring是一个应用程序框架,处理IOC(控制反转)。

    Struts 2是一个Web应用程序MVC框架,处理操作。

    Hibernate是一个ORM(对象关系映射),处理持久数据。


    3

    简而言之,

    Struts 用于网站前端开发

    Hibernate 用于网站后端开发

    Spring 用于网站全栈开发,其中Spring MVC(模型-视图-控制器)用于前端开发。 ORM、JDBC用于数据访问/集成(后端)等。


    2
    “Spring”是一个由Rod Johnson于2003年创建的轻量级开源框架。Spring是一个完整和模块化框架,可以用于实时应用程序的所有层实现,也可以用于实时应用程序的特定层的开发。
    “Struts”是一个开源Web应用程序框架,用于开发Java EE Web应用程序。它使用并扩展Java Servlet API,以鼓励开发人员采用模型-视图-控制器(MVC)架构。它最初由Craig McClanahan创建,并于2000年5月捐赠给Apache基金会。
    下面列出了Spring和Strut框架之间差异的比较表。

    enter image description here


    2
    在Hibernate中,您无需担心如何在SQL中创建表格,也不需要记住连接和预处理语句等内容,因为数据将持久化存储在数据库中。因此,基本上它使开发人员的工作更加轻松。

    0

    Tapestry页面和组件是简单的POJO(Plain Old Java Object),包含getter和setter以便轻松访问Java语言特性。


    0

    SpringStrutsHibernate之间的区别如下:

    1. Spring是一个应用程序框架,而Struts和Hibernate不是。
    2. Spring和Hibernate是轻量级的,而Struts 2不是。
    3. Spring和Hibernate具有分层架构,而Struts 2没有。
    4. Spring和Hibernate支持松耦合,而Struts 2不支持。
    5. Struts 2和Hibernate具有标签库,而Spring没有。
    6. Spring和Hibernate可以轻松集成ORM技术,而Struts不能。
    7. Struts 2可以轻松集成客户端技术,而Spring和Hibernate则不行。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接