首页 > 图灵资讯 > 技术篇>正文

Java流行框架Struts、Hibernate和Spring对比

2021-12-29 09:43:34

  近年来,Java一直处于最流行的编程语言之列,Hibernate和Spring这三个流行的框架通常在Java开发中扮演着重要的角色,所以本文将对这三种流行的Java框架进行比较,分析其产生及其优缺点。

通用的Java框架。

  一.Struts.Hibernate和Spring生成。

  1.Struts。

  采用JSP+Servlet+Javabean+JSP,实现传统Javaweb应用程序,该模型实现了最基本的MVC分层,并将程序结构划分为多层,还有一个Servlet,用于处理逻辑控制,它负责前台显示,还有一个Javabean负责数据封装。但这个结构还是有问题的:比如在JSP页面中嵌入大量Java代码,需要使用<%%>符号,这会导致页面结构混乱,Servlet和Javabean要做许多跳和运算工作,耦合紧密,程序复用度低等。

  为此,出现了Struts框架,它是一种完美的MVC实现,该系统具有用于不同业务的中央控制类(一个Servlet),要求一个Action类负责页面跳跃和后台逻辑操作,其中一个或多个JSP页负责数据的输入和输出显示。在Action和JSP之间还有一个Form类来传递数据。JSP中可以使用Struts框架提供的标签集,与HTML标签一样简单,但也能完成非常复杂的逻辑。<%%>围绕这个JSP页的Java代码就不再需要。

  2.希伯纳特。

  但是,把操作逻辑放在Struts的Action中,会使Action类复用并造成逻辑混乱,因此一般人会将整个Web应用分成三个层次,Struts负责的是显示层,它调用业务层来完成操作逻辑。商业层再次调用持久化层来读和写数据库。

  用JDBC连接读取和写入数据库,我们最常用的操作就是打开数据库连接,用复杂的SQL语句读取和写入连接,关闭连接,获取的数据再被转换或者封装到外部传输,这是一个非常麻烦的过程。

  在这一点上,Hibernate框架要求您创建一系列持久性类,其中每一个类的属性与数据库表的属性一一对应,当然,还能实现关系数据库中各个表的关联。在需要相关操作的时候,无需关注数据库表。不需要再到一行查询数据库,只需持久化类就能完成增、删改的功能。让软件开发真正地面向对象,而非杂乱无章的代码。在我看来,使用Hibernate可以比JDBC方式减少80%的程序。

  3.Spring。

  既然已经使用了三层,那么每一层之间的调用又如何呢?例如,显示层的Struts需要调用业务类,而业务类需要new出,然后再使用;业务层需要调用持久层的类,也需要new一个持久层类出来。这样一种新的方式相互调用是软件开发中最差设计的表现。简而言之,调用者依赖于被调用者,他们之间会形成一个强耦合,如果我想要将一个类用于别处,那么还需要包括与类相关的其他类。这些程序非常混乱,每一个类都相互依赖于相互调用,并且重用度非常低。许多依赖于它的类都将被牵连到一个类中。因此,出现了spring框架

  Spring的作用就是完全地解决耦合类之间的依赖性,一个类如果要依赖于什么,它就是接口。对于该接口的实现方式,它并不重要。只需获得实现此接口的类,就很容易通过xml配置文件将实现类注入到调用接口的类中。这些类之间的依赖性已经被配置文件所取代。因此Spring框架最核心的部分是所谓的依赖注入和控制反转。

  目前,Struts负责显示层,Hibernate负责持久层,而Spring负责中间的业务层,这就是当前JavaWeb应用程序中最为流行的结构。此外,由于Spring所使用的依赖性注入和AOP(面向方面的编程),它的这种内部模式非常出色,Spring本身已经实现了一个MVC框架,它使用依赖注入技术,称为SpringMVC,与此同时,Spring也将Hibernate集成到其中,将产品管理从Hibernate的持久化层提升到业务层,使用起来更方便、更强大。

  Struts.Hibernate和Spring的长处。

  1.struts。

  对于现代软件工程师广泛使用的Java框架进行更详细的说明,我们在这里向您介绍ApacheStruts1的后续版本Struts2。Struts2用来构建现代的JavaEEWeb应用程序。ApacheSoftware为开发者提供了一个广泛的工具,可以用来创建企业级的面向Web的应用程序,对开发流程进行优化,甚至包括后期维护,最后点优化开发过程以及后期维护。假如你正在为高负荷系统(比如广播门户)而烦恼,Struts将成为你的一个不二选择。

  因为Struts2实现了Action类(一般的POJO对象),所以测试编写代码的工作会更少。通过框架API,耦合更加容易,并帮助调整拦截器。

  2.希伯纳特。

  Hibernate是一种开源的对象关系映射框架,它对JDBC进行了轻量级对象封装,使java程序员可以随心所欲地用编程思想控制数据库。

  Hibernate可应用于任何使用JDBC的场合,并且既适用于Java的客户程序,还可用于Servlet/JSP的Web应用,其中最具革命性的是,Hibernate可以替代EJB的J2EE体系结构中的CMP,从而承担数据持久性的任务。

  大部分开发机构通常会建立自己独立的数据持久层。当基础数据结构发生变化时,修改应用程序的其余部分以适应此变化的成本将会非常巨大。适时地,Hibernate填补了这个空缺,它为Java应用程序提供了一个易于使用、高效的对象关系映射框架。hibernate是一个轻量级的持久化框架,其功能非常丰富。

  尽管Hibemate并没有出现在RebelLabs排行榜上,但是它仍然值得关注Java框架。这种映射Java框架解决了对象与关系不匹配的问题,采用连续数据库访问操作取代高级对象处理功能。每一家企业的应用程序都不一样,因此Hibernate有一套强大的功能集,可以帮助后台开发者更好地调整数据访问层。这个高级ORM框架允许您对java对象(实体)执行数据库操作,使用Hibernate缓存器将数据从Java环境持久存储到数据库是一个持久概念。

  3.Spring。

  这是一项开放源码的项目,目前正在进行中;它以IoC为基础,一个由AOP构成的多层多层j2ee系统的框架,但是并不要求您必须在每一层中使用Spring,由于其模块化良好,允许您选择使用某个模块以满足您的需求;它实现了非常优雅的MVC,为各种数据访问技术提供了一个统一的接口,采用IoC使bean的组装变得容易,为实现TranscationManagment等提供了简洁的AOP和相应的实现。

  Spring获得绝对优势并非没有道理,而Spring能够成为最著名的Java框架的主要原因在于:

  1.简化使用POJO输入测试数据。

  2.增强模块化,使代码具有更好的可读性。

上一篇 成为高级Java程序员需要掌握哪些技能
下一篇 Java学习之Java源码讲解

文章素材均来源于网络,如有侵权,请联系管理员删除。