解释spring,struts,hibernate优缺点

解释spring,struts,hibernate优缺点

Struts优点:对视图层进行封装 更好的分离视图层和控制层 对数据进行封装
缺点: 1 、转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。
   2 、Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。 
    3、 测试不方便. Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。 
    4、 类型的转换. Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。 
    5、 对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。 
    6、 前端表达式语言方面.Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是JSTL的表达式语言在Collection和索引属性方面处理显得很弱。 
    7、 对Action执行的控制困难. Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。 
    8、 对Action 执行前和后的处理. Struts处理Action的时候是基于class的hierarchies,很难在action处理前和后进行操作。 
    9、 对事件支持不够. 在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。 
Spring优点: 用依赖注入模式大幅度的减少了程序之间的耦合性 并很好的实现了各种JAVA的设计模式 强制使用者养成用接口编程的习惯
缺点: 使用人数不多、jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器
Hibernate: 用操作对象的方式操作数据库 将对数据库的操作面向对象化 并对一些数据库操作进行了封装
缺点: 它限制您所使用的对象模型。(例如,一个持久性类不能映射到多个表)其独有的界面和可怜的市场份额也让人不安,尽管如此,Hibernate 还是以其强大的发展动力减轻了这些风险。其他的开源持久性框架也有一些,不过都没有 Hibernate 这样有市场冲击力。
时间: 2024-09-14 15:57:59

解释spring,struts,hibernate优缺点的相关文章

MyEclipse5.1开发Spring Struts Hibernate应用时的数据库问题

使用Eclipse3.2+MyEclipse5.1开发Spring+Struts+Hibernate应用,使用自动生成的applicationContext.xml和hbm可能文件会出现以下两个问题:1.在进行数据库操作时,发生连接数据库错误,异常信息大致如下:org.hibernate.exception.GenericJDBCException: Cannot open connection        at org.hibernate.exception.ErrorCodeConvert

Spring+Struts+Hibernate入门例子Wiring Step By Step

wiring下载点http://www.onjava.com/onjava/2004/04/07/examples/wiring.zip 说重点吧,主要是注意几点! 一 前期工作1. 下载Xdoclet,DB2Java和Proxool,并把Proxool lib目录下的.jar拷到wiring WEB-INF下的lib目录. 把相应的Spring,Hibernate,Struts要用到的包也拷进lib目录,如aopalliance.jar;                   cglib-ful

spring+struts+hibernate问题

问题描述 严重: action: nullorg.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Bean class [org.springframework.orm.hibertnat

struts2 0-spring+struts+hibernate整合问题,请大神帮忙!

问题描述 spring+struts+hibernate整合问题,请大神帮忙! 求大神解答,兄弟初学ssh,今天整合他们三个.报错很多,但是最后竟然可以正确运行(我只实现了一个从数据库读用户名密码来登陆的功能.) 报错如下:(其中第一个错误就是Could not open ServletContext resource [/WEB-INF/applicationContext.xml],我在这个目录下有这个文件的. 而且我的web.xml里有这些内容. contextConfigLocation

struts和spring和hibernate报下面的异常,有大神知道么?谢谢。

问题描述 struts和spring和hibernate报下面的异常,有大神知道么?谢谢. Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in Servlet

Struts、Spring、Hibernate、SSH、ajax都是框架吗需要都学吗

问题描述 Struts.Spring.Hibernate.SSH.ajax都是框架吗需要都学吗 解决方案 解决方案二:struts,spring,hibernate是轻量级框架也就是sshajax是domcssjavascriptXmlHttprequest是一种技术,以上做javaweb开发都是要学习的解决方案三:是啊,Struts.Spring.Hibernate.ajax都要学解决方案四:正在学习中!!!解决方案五:正在进行中解决方案六:必须的...想做java程序员,这些技术很关键!当然

初识SSH(Struts,Spring,Hibernate)-(SSH1)

       做IT的,都知道,项目不知道什么时候就来了,加班也是家常便饭,所以对于新来项目也由原来的恐惧到现在慢慢适应!       这不,刚开发完一个小型系统,又来了一个特急的项目,10天完工,7天后台,3天前台,今天刚刚完成后台,趁着前台美工还有部分没做完,我得以喘息,上来写写这两天的感受,大家共同学习!      首先,由于该项目是个中小型项目,另外后期改动较大,也为了学习新的MVC模式,所以架构设计人员认为使用SSH(Struts,Spring,Hibernate)进行开发,初学的我原

将Spring和Hibernate与WebSphere Application Server一起使用

如果您考虑将 Spring 或 Hibernate 与 IBM WebSphere Application Server 一起使用,则本文将向您阐述如何为各种 WebSphere Application Server 场景配置这些框架.本文不是对任一框架的详尽评论,而 是帮助您成功实现此类场景的重要参考.(针对 Spring Framework 2.5 和 WebSphere Application Server V7 进行了更新.) 引言 Spring Framework(通常称为 Sprin

Spring 与 Hibernate 的延迟加载和 Dao 模式

Hibernate 与延迟加载: Hibernate 对象关系映射提供延迟的与非延迟的对象初始化.非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来.这有时会导致成百的(如果不是成千的话) select 语句在读取对象的时候执行.这个问题有时出现在使用双向关系的时候,经常会导致整个数据库都在初始化的阶段被读出来了.当然,你可以不厌其烦地检查每一个对象与其他对象的关系,并把那些最昂贵的删除,但是到最后,我们可能会因此失去了本想在 ORM 工具中获得的便利. 一个明显的解决方