论坛首页 Java企业应用论坛

ssh优缺点

浏览 57434 次
锁定老帖子 主题:ssh优缺点
该帖已经被评为良好帖
作者 正文
   发表时间:2010-08-18   最后修改:2010-08-18
我面试也被问ssh了,其实我也没怎么用过,我讲一下我自己的理解,请用过的同志给我扫下盲,struts+hibernate+spring,  spring 提供xml配置文件和事务管理,可以配置数据源,hibernate 上面有同学讲了,提供java类和配置文件 对应database 表中一条记录,可以由myeclipse自动来生成,这里需要手动配置一下hbm.xml,struts提供action,,,web层 提供action和service,此service接口屏蔽了底层操作database的实现,由spring将dao(是具体的database操作实现)注入到service中,如果系统中用到了缓存,说hibernate提供一级缓存,其实就是内存缓存(也可以自己实现,其实就是将对象放到Map中,下次请求时先检查Map,如果有则直接返回,没有,在去database查),二级缓存据说是留了接口,可以ehcache来实现,我在生产环境中没用过,不敢评价
ssh 怎么分配MVC这三层架构呢,,我不是很清楚,请大家帮我扫下盲,V C 由struts的jsp和action ,actionMapping来实现,,M 由hibernate 来实现,spring 只应用了IoC功能,在web层应用时才将dao注入service,请指教
0 请登录后投票
   发表时间:2010-08-19  
Angel_Night 写道

面试归来

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

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

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


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


struts

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

          你忘记说MVC概念对servlet模式影响深远。。。。



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

     Struts的FormBean把所有的数据都作为String类型,需要额外转换。

配置文件还是略显繁琐。。



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


Spring

优点:
          IoC虽然不好形容,但是我从最开始接触spring时就觉得这是个很大的优点
          aop(我自己写过的aop就只有日志...)
          对象容器
                管理对象的生命周期(集成struts摆脱线程问题)
          测试也变得方便
          多数代码没有侵入spring的API
          对于hibernate有很好的支持
          还有很多好处(权限,email支持,调度任务,权限,事务等等),我把我知道的对于ssh的尽量总结出来

比如singleton等等,解耦。。

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

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

 

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

 

过于灵活算不算一个缺点呢?


hibernate

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

 

不好说什么,可以对比一下ibatis.....

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

          不太适合做复杂的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语句查询

 

 

 

 

 

 

0 请登录后投票
   发表时间:2010-09-06  
Angel_Night 写道
wj539h 写道
你确实很菜,你对SSH还不是很熟,而且struts1我真想不到现在居然还有人在用


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

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



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

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

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

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

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

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


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








不要随便说别人菜。
0 请登录后投票
   发表时间:2010-09-06  
struts1,目前项目中一直在使用,我觉得一个企业使用struts1或struts2,又或者spring mvc,他们的关系应该不会很大,如果一个公司使用struts1用了三四年,然后说struts2很火,很牛X,难道就都去用struts2?我觉得不太现实,框架只是让大家从比较繁琐在底层中解脱出来,让大家能更好的关注业务,用什么不都能达到目的
hibernate3, 最大的好处是进行数据添加,修改,删除的时候方便,如果是简单的查询还好,复杂的查询性能好像不是很高,当然,也可能是我水平菜,没能体会到其中的精髓吧,
spring,一直在用,缺点暂时没有感觉到
0 请登录后投票
   发表时间:2010-11-16  
我写了 有一两个网站了 可是 都是用公司 封装好的框架 根本就不涉及这些 而且 配置也很多
0 请登录后投票
论坛首页 Java企业应用版

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