`
javaso
  • 浏览: 51835 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

struts spring hibernate 优缺点之我见(综合贴非原创)

阅读更多

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有什么缺点?我想是不支持分布式访问,分布式事务和集群。      

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics