Struts spring hibernate 越来越“泛滥”了,外面常有不少公司面试总会问起SSH优缺点,网络上也有不少一些文章总结ssh优缺点,但我总感觉总结得不够完全,没完全写到点子上。于是收集了网上的一些意见,加上一些自己见解是以此篇来由。
Struts,spring,hibernate是开源软件,经过了数千万的系统的考验,稳定性,开源便是他们的一大共同优点。具体来讲, STRUTS作为MVC框架的一种实现,有以下优点:
1、实现MVC模式,程序员只需要关注业务逻辑的实现
2、STRUTS的丰富的标签,如可以灵活使用,可以加快一定的开发效率,不过这也成为了STRUTS的一个诟病,STRUTS标签太复杂,不好用
3、业面导航,通过STRUTS的配置文件可以把握整个系统各部份之间的联系,方便后期的系统维护
4、提供EXCEPTION处理机制,支持I18N
缺点嘛,好象还挺多的
1、配置文件过于复杂,过于烦锁,每个具体涉及到操作的ACTION,都要配置FORMBEAN FORWARD等,每次转到一个新的展示页面,就要配置一次forward,如果有10个就要配置10次,而每个ACTION 、 FORBEAN 、 FORWARD、等标签本身配置项也很多,在一些大型项目中,有可能会大大降低开发效率
2、标准的STRUTS的ACTION是非线性安全的,是单例的,它用一个实例去完成所有的请求,如果用得不好,有可能会引用线程安全的问题
3、ACTION测试不方便,由于对SERVLET API依赖过于严重,以致单元测试过于依赖WEB容器,不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。
4、 对Action执行的控制困难. Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。
5、 对Action 执行前和后的处理. Struts处理Action的时候是基于class的hierarchies,很难在action处理前和后进行操作。(重写RequestProcessor processActionPerform()方法可实现此需求)
6、STRUTS校验框架的校验仅能精确到类,而不到精确到方法。如果要对DISPATCHACTION的FORMBEAN进行验证,不能仅能校验其中的个别方法,而是校验了所有了方法。如果要校验,通常只能手工DISPATCHACTION的方法里进行硬编码
7、FORMBEAN像是一种鸡肋,由于是具有FORMBEAN侵入性的,不能传到更低层次去,作为系统实体来用,仅起验证表单,接收表单的作用,一定程度上还造成了struts配置文件的复杂。
虽然STRUTS看起来很多缺点,然以上问题,对于STRUTS讲并非致命性的,稳定性才是硬道理,而且,通过一定的方法以上问题一定程度上能解决。
Hibernate 优点:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库,屏蔽数据库的差异,完成数据持久化的重任,
a.Hibernate 使用 Java 反射机制而不是字节码增强程序来实现透明性。
b.Hibernate 是个轻量级框架。映射的灵活性很出色。
c.它支持各种关系数据库,从一对一到多对多的各种复杂关系。
缺点:
HIBERNATE由于是对JDBC进行了轻量级的封装,内存的消耗要比用纯用JDBC的大,批量操作效率一定程序上也要比JDBC慢。
HIBERNATE灵活性很高,配置项繁复,一定程序上增加了新手的学习周期,用Hibernate如果用得不好,很容易造成性能问题。
Hibernate在动态建表,批量操作方面,能力有限。查询对象,一般是HIBERNATE本身智能地发送SQL语句,虽然有本地SQL查询,不过DBA优化数据库查询在HIBERNATE面前有点显得无能为力
Hibernate的opensessioninview引发性能担忧, Hibernate通过opensessioninview解决实体在页面上延迟加载问题,担是它需要把数据库连接保持在页面上,也扩大了事务的边界。如果在过多网速很慢的用户,有可能会造成数据库连接用尽的危险。
spring 产生在without ejb的年代,它的使命就是要简化企业级开发,确实,它一定程度上完成了它的“使命”,spring通过ioc aop 声名式事务,一些模板类等,使得对象更加用趣了,事务管理更加方便了,编写代码更加简便了。如果要说spring有什么优点的话,以上都可以说是它的优点吧。不过要说spring有什么缺点?我想是不支持分布式访问,分布式事务和集群。
分享到:
相关推荐
Struts、Spring 和 Hibernate 是Java Web开发中三大主流的开源框架,它们各自有着独特的功能和优缺点。在构建企业级应用程序时,理解这些框架的核心特性以及它们如何相互补充至关重要。 Struts 是一个基于MVC...
Struts、Spring和Hibernate是Java开发中常用的三个框架,它们分别在MVC模式的不同层面提供支持。以下是这三个框架的详细优缺点分析: **Struts** Struts是一个开源的MVC框架,主要用于构建Web应用程序。它的主要...
Struts,Spring,Hibernate优缺点_fly.mht
### Struts, Spring, Hibernate 三大框架的优缺点分析 #### Struts框架 **优点:** 1. **组件模块化与灵活性:** Struts框架强调组件的模块化设计,这使得开发者可以根据项目的不同需求灵活地选择和组合这些组件。...
### SSH框架:Struts、Hibernate、Spring 的优缺点分析 #### Struts **优点:** 1. **MVC模式的支持**:Struts框架遵循MVC(Model-View-Controller)设计模式,它将应用程序分为模型层、视图层和控制器层,这样的...
### Struts、Spring、Hibernate 的优缺点分析 #### 一、Struts 框架 **优点:** 1. **实现 MVC 架构模式:**Struts 通过 Model-View-Controller (MVC) 设计模式,使得业务逻辑与表示层分离,便于维护和扩展。 2. ...
Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2主要用于MVC(Model-View-Controller)架构的实现,提供控制层的支持;Hibernate是对象关系映射(ORM)工具,负责数据持久...
SSH,即Spring、Struts和Hibernate,是Java开发中一种常见的技术栈,用于构建企业级Web应用程序。这个组合提供了模型-视图-控制器(MVC)架构的支持,以及数据库访问和业务逻辑处理的能力。让我们详细分析一下SSH的...
### 基于Struts、Hibernate和Spring的J2EE架构研究 #### 一、引言 随着互联网技术的发展和企业需求的日益多样化,软件开发领域面临着越来越多的挑战。为了解决这些问题,J2EE(Java 2 Platform, Enterprise ...
【SSH面试题汇总】主要涉及的是Struts、Spring和Hibernate这三个流行Java EE框架的相关知识,以及MVC设计模式的理解。MVC(Model-View-Controller)模式是软件工程中的一种架构模式,它将应用程序分为三个核心组件:...
Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们各自在应用程序的不同层次上发挥作用,共同构建了一个完整的MVC(Model-View-Controller)架构。这篇文章将详细讲解这三个框架的核心概念、整合方式...
Struts、Hibernate和Spring是Java开发中的三大框架,它们常被组合使用,称为SSH整合,以构建企业级的Web应用程序。下面将详细解释这三大框架各自的特点和它们整合的优势。 Struts是一个基于MVC设计模式的Java Web...
1. 了解Struts的工作流程和优缺点,理解Action的线程安全性问题。 2. 理解MVC模式,知道Struts如何实现MVC,以及MVC的组成部分。 3. 熟悉Spring的AOP和IOC概念,理解它们在Spring中的应用。 4. 掌握Hibernate的查询...
在JavaWeb开发领域,Struts、Spring和Hibernate是三大主流框架,它们分别负责表现层、业务层和服务层的管理,形成了MVC(Model-View-Controller)架构的基础。本示例将详细介绍这三个框架如何整合使用,以提升项目的...
Struts、Spring 和 Hibernate,这三个技术常常被合称为 SSH,是Java Web开发中经典的三大框架。它们分别在MVC(Model-View-Controller)架构的不同层面上发挥作用,以提高开发效率和应用程序的可维护性。 Struts 是...
### Struts、Hibernate与Spring框架剖析 #### 一、引言 随着信息技术的快速发展,Java Web开发领域中,Struts、Hibernate与Spring这三个框架因其在实际项目中的广泛应用而备受关注。本文将对这三个框架进行深入...
### Spring + Struts + Hibernate 面试题解析 #### 一、Struts 相关面试题 **1. Action 是否是线程安全的?如果不是,有什么方式可以保证 Action 的线程安全?如果是,请说明原因** - **Struts 1 中 Action 的...
Struts2.0、Spring2.0和Hibernate3.0是Java Web开发中经典的MVC框架组合,被誉为SSH(Struts、Spring、Hibernate)框架。这个项目旨在展示如何将这三个框架进行集成,以便在实际应用中实现高效的数据访问和业务逻辑...
标题 "integer with spring struts hibernate mybatis jpa" 提示了这个压缩包可能包含一个集成使用Spring、Struts、Hibernate、MyBatis和JPA(Java Persistence API)的示例项目或者教程。这些技术都是Java开发中的...