论坛首页 Java企业应用论坛

ssh优缺点

浏览 57740 次
锁定老帖子 主题:ssh优缺点
该帖已经被评为良好帖
作者 正文
   发表时间:2009-12-11   最后修改:2009-12-18

面试归来

技术面试官叫我谈谈 ssh优缺点

平时用起来倒是挺顺手..但是从来没有系统的总结过..导致很多点会都没有说出来..

这次我认真总结了一下...


常说的好处 开源
常说的坏处 配置文件过大我就不提了


struts

优点:
          收集,验证表单数据相比传统servlet简单
          优雅的实现可配置的请求转发

缺点:
          属侵入设计(actionform,action都无法复用)
          与serlvetAPI严重耦合..无法摆脱容器
          action与web层耦合.不方便测试
          标准struts的action是非线程安全(很多简历上写着"精通Struts"的高手们都忽视的问题)

不熟悉:
          struts标签库没怎么用过(常用jstl)
          国际化只学过,没用过.停留在demo级别
          validation.xml(配置文件写多了,有时候也想逃避)
          支持表现层技术单一(一直作为struts的缺点来说...但是我也就会jsp而已)


Spring

优点:
          IoC虽然不好形容,但是我从最开始接触spring时就觉得这是个很大的优点
          aop(我自己写过的aop就只有日志...)
          对象容器
                管理对象的生命周期(集成struts摆脱线程问题)
          测试也变得方便
          多数代码没有侵入spring的API
          对于hibernate有很好的支持

          还有很多好处(权限,email支持,调度任务,权限,事务等等),我把我知道的对于ssh的尽量总结出来

缺点:
          缺点我不好提出来..without ejb我没看过..甚至ejb我也不会..
          我也就简单用用...不过我听说过这些缺点(如果有错请及时指正)

          如果开发者设计不出合理的接口.导致一改就改多处.反而造成不便
          不支持分布式部署。
          不是一站式方案(开放的体系和封闭的体系这种话题我从来参与不进去..但是还是常看看的)

 

          使用了反射来管理其容器中的bean,在程序中增大了内存和运行计算的时间,当然,这和spring带来的管理方便的好处来比,可以把此缺点忽略不计。


hibernate

优点:
          ORM 使数据层更加对象化..摆脱所谓的阻抗不匹配
          sql方言的存在使得开发不用过多考虑 数据库差异 的问题
          非侵入式设计

缺点:
          个人感觉熟练使用的话曲线太陡..(尤其对于多表间复杂查询)

          不太适合做复杂的select语句查询

不熟悉:
          Transaction(一般都直接交给spring了..接触不错..demo级别)
          缓存机制(Session的缓存和SessionFactory的缓存(内置缓存和外置缓存))

 

          聚集性操作数据(这种时候jdbc也白费吧...还是存储过程)

错觉:
          hibernate对于瑕疵的处理不够
          比如:有entity-name的映射 save 就抛错这是我很久以前就发现的问题..一直没有得到修正..难道这不是问题?


可能高手从我总结就可以看出我水平有多菜....

不过还是不要吝惜口水 喷我吧..

在javaeye被喷 只会使我进步  面试时候被喷 少的就是机会了

 

 

 

内容更改记录:

 

javaeye_id 修改原因(也就是回复部分内容)
xiaoyuqi00 hibernate优点:非侵入式设计
这点我不怎么认同,如果你用hql的话很数据层就很麻烦了,虽然hibernate支持sql但是既然用hibernate,那首选肯定是hql或者criteria
geeksun

使用了反射来管理其容器中的bean,在程序中增大了内存和运行计算的时间,当然,这和spring带来的管理方便的好处来比,可以把此缺点忽略不计

blackstreet 不太适合做复杂的select语句查询

 

 

 

 

   发表时间:2009-12-11  
楼主和我情况差不多
0 请登录后投票
   发表时间:2009-12-11  
hibernate优点:非侵入式设计

这点我不怎么认同,如果你用hql的话很数据层就很麻烦了,虽然hibernate支持sql但是既然用hibernate,那首选肯定是hql或者criteria
0 请登录后投票
   发表时间:2009-12-11  
xiaoyuqi00 写道
hibernate优点:非侵入式设计

这点我不怎么认同,如果你用hql的话很数据层就很麻烦了,虽然hibernate支持sql但是既然用hibernate,那首选肯定是hql或者criteria



使用hibernate编写业务逻辑,持久类 没有必须要遵守hibernate专有的规则和设计模式

反观struts虽然有一个很像持久类的actionform...但是我们从来都是直接把数据转到另外一个pojo中...

语言表达不够好...用了"非侵入式设计"


我作为一个新手就谈侵入性实在是太扯了...(注意以前老师比较爱谈这些..)

我连hibernate都不敢说熟悉...只敢说能够用起来

一会修改一下 把这点修改掉
0 请登录后投票
   发表时间:2009-12-11  
我们都希望自己很强,可是技术就像是风,毫无方向啊。I am a bit green.
0 请登录后投票
   发表时间:2009-12-11  
我认为这篇文章很有价值,楼主是典型的 Java Web 程序员。
0 请登录后投票
   发表时间:2009-12-11  
我觉得楼主总结的比我清楚。。。。
0 请登录后投票
   发表时间:2009-12-11  
wj539h 写道
你确实很菜,你对SSH还不是很熟,而且struts1我真想不到现在居然还有人在用


是的,我确实很菜...接触web开发时间很短 属于应届毕业生吧...

和那些简历上写着精通ssh的毕业生不同 我只能简单用用



不过后半句是不是有些夸张了...

08年Indeed全球Java职位需求技能统计

mvc框架百分比 struts2不过才0.2% struts1有80%

虽然数据比较久了(我没找到新的 也不会统计...)

但是也不会迅速消亡到"居然还有人在用这种地步吧"?

毕竟struts1比较老了..每个公司都有相应的再封装...


可能是文科的吧 用了夸张的修饰我这种不会写作文的家伙还给认真了





0 请登录后投票
   发表时间:2009-12-11  
感觉不能武断说优缺点,你认为的缺点可能对某些人来说是优点!
0 请登录后投票
   发表时间:2009-12-12  
struts最大的缺点我觉得就是写单元测试的,太麻烦了,
hibernate,个人觉得还好,没有太大的缺点,毕竟,能用hql也能用sql,缓存那一块,
我很少用,很难控制,学起来是比较的麻烦,
spring,暂时没有发现很郁闷的问题,
现在的注解在一定的程度上缓解了配置文件过于庞大的问题,
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics