[纯讨论]SSH2框架的优缺点

dzc1987 2012-12-18 04:55:40
百度或者google【SSH2框架的优缺点】,出来的大部分是SSH2框架的整合内容,但对优缺点的讨论非常少。
分析的比较详实的是Struts2,Spring,Hibernate框架的优缺点这篇文章里面的。

其他优点不论,对一条表示疑问。

【— 需求的变更:以笔者多年的开发经验来看,很少有软件产品的需求从一开始就完全是固定的。客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得软件的实现不得不随之改变。当软件实现需要改变时,是否可以尽可能多地保留软件的部分,尽可能少地改变软件的实现,从而满足客户需求的变更?答案是——采用优秀的解耦架构。这种架构就是J2EE的分层架构,在优秀的分层架构里,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件耦合,只与接口耦合;同样,业务逻辑层依赖于DAO层,也不会与任何具体的DAO组件耦合,而是面向接口编程。采用这种方式的软件实现,即使软件的部分发生改变,其他部分也尽可能不要改变。】

根据小弟的开发经验来看,需求变了后,基本会导致表现层、业务逻辑层、DAO层3个层面的改动,而且改动起来工作量也不比传统的方式少。

有哪位大牛具体分析下这方面的优点?
...全文
1180 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunyi008 2014-01-04
  • 打赏
  • 举报
回复
新手,来看美女帅哥长见识的…………(刚开始学习SSH2)
wbxh716 2013-07-03
  • 打赏
  • 举报
回复
ssh2應該被拋棄了, 站在開發人員的角度: 1.能解決協同開發,單現在系統都是模塊化,協同開發的概率不多 2.代碼分層,方便維護,代碼的業務量大的時候不見得非常好維護 3.開發效率,其開發效率是多人協作和代碼生成器,如果沒有這兩項或中間一項,基本沒有效率可言 4.方便維護,系統模塊化了,維護也更加方便,框架當業務量大的時候,維護也是一個難事 5.jsp頁面沒有java代碼,前部用struts2標籤也不見得容易維護 站在架構人員的角度: 1.系統效率低下,不能通過軟件集成,不集成的話,一台服務器只能幾十人同時在線 2.花費客戶的費用高:客戶需要購買大型服務器或者那種集群的刀片服務器,這個一般價格昂貴 3.開發需要多人協同開發,效率不高 4.項目越大,成本越高,對應大型項目完全靠堆硬件(我們客戶不是政府和銀行,小企業也有使用 軟件的權利) 5.整體技術學習難度大,人員成本很高
  • 打赏
  • 举报
回复
引用 6 楼 s478853630 的回复:
1,冗余代码多,ssh组合后的jar多达40个,其中很多jar中就只引用到了一个class,大部分功能都是在实际开发中用不到的! 2,运行效率低,就拿hibernate和jdbc作比较。 同样的数据库,同样的表,同样的连接池,5千条数据的查询,jdbc比hibernate最起码快0.1秒,有时候快0.6秒。 很多人使用hibernate是因为hibernate方便,在数据层中可节省不少代码。 其实把jdbc包装一下,根据java反射机制同样具有封装数据实体的功能,可以让代码比hibernate更精简! 3,配置文件多,ssh的配置繁琐是众所周知的,虽然也能做到壹配置,但对ssh的掌握要求很高。 4,项目启动慢,ssh组合的项目在windows平台下的服务器中启动一下,最少要15秒,有时多达30秒, 程序员要面对这漫长而又无奈的等待,如果是性子急的人,还真是一个考验。 5,适应能力弱,不能在main方法中运行spring3,会让你很多地方感到郁闷! 6,开发效率低,没有代码生成器,每个java文件都要右键单击新建,纯体力活。
嗯嗯嗯,你说的这些我都有所体会啊,尤其是启动,有时候都能达到50秒,一个项目,从开始到完成,光花在启动的时间就是一个不小的数字。。。。。。
licip 2013-06-16
  • 打赏
  • 举报
回复
其实,需求的变动,不管你用框架,还是不用框架,都是需要的,但用框架由于使用了松耦合,所以改动是非常少的,你可以去做一个对比就知道了,虽然用框架来开发,配置文件多,但对于后期的维护升级是非常方便的,并且,现在还有注解的功能出现,让一切变得越来越方便。
神探狄仁杰 2013-06-16
  • 打赏
  • 举报
回复
spring、hibernate、struts2,还是非常NB的。 不管大家怎么说,也无法否定它们是非常优秀的框架的这一现实。 仅限于对框架的使用而不能凌驾于其上的任何评论,都是没有说服力的,绝对的一叶障目,不见泰山。
XX的小石头 2013-06-16
  • 打赏
  • 举报
回复
新手飘过,只用过struts和hibernate,感觉hibernate的效率确实是低了点
观鱼塘主 2013-06-16
  • 打赏
  • 举报
回复
长见识了。大神无处不在!小生拜谢! 对编程思想的理解更深了一层,容我去找周公探讨下先。
鬼门关 2013-06-15
  • 打赏
  • 举报
回复
都是牛人
u011011528 2013-06-14
  • 打赏
  • 举报
回复
引用 14 楼 yellowshine 的回复:
要理解ssh的好处,不是一朝一夕的事,做了8个10个大型项目,才能有所体会。 首先代码即是设计,设计就是代码。考虑周全的设计、封装良好的框架,即是没有ssh一样不会差。 ssh最大的贡献是其思想而非发布出来的jar包。了解struts的产生背景和mvc模式,hibernate的orm思想,spring的面向对象、依赖注入、实现依赖接口而非接口实现依赖等等,这些远比代码本身重要。如何体会这些思想的重要性?很简单,不用struts,用jsp+servlet写一个web程序,稍大一点有二三十个功能的,不要helloworld,体会一下mvc的好处。写一个有二三十张表的应用程序,不用hibernate,看看难度如何。 也许你还是可以说,没有struts、hibernate我仍然可以很好地完成程序,的确,程序本身难度并不大,只要足够细心,程序最终可以完成。这就是另一层次的问题了,做为程序员的我们,应该把精力放在什么地方,一个一个地去对entity属性与数据库字段,一遍又一遍看看servlet的访问路径是否正确,页面上的username到服务器端不会误写成name等等。程序员的时间很宝贵,应该放在理解需求、完成良好的程序设计,而不是浪费在这种不需要动脑筋的比对名字的体力活上面。有了struts、hibernate,可以将程序员从这种无意义的活动中解脱出来,这非常有用。原因有1、实用框架能较少笔误这种低级错误,实用hibernate,加上myeclipse的自动化工具,能将错误降低到0。有过开发经验的人都知道,如果写代码花1个小时,通常找bug需要花半天的时间,而这些几乎有一半以上是笔误。2、提高开发速度,这个就不多说了。3、便于维护,如果数据库表添加了一个字段,改一下entity和映射文件,剩下的就交给hibernate完成吧。 以最少的时间,最小的工作量,完成高质量的、便于扩展的、易于维护的项目,这是框架的真正好处,需要站在软件工程的角度才能体会。
赞同,至于包什么的可以提前准备好,然后配置可以myeclipse 操作生成一些,其他的挺简单的啊,虽然第一次配置的时候有可能对环境什么的冲突,但之后就会很好了。
北吹 2013-06-14
  • 打赏
  • 举报
回复
现在越来越多的用SPRING MVC了,Struts地位很尴尬了。
长腮的北极熊 2013-06-14
  • 打赏
  • 举报
回复
路过,不做解释
dpj2008 2013-06-14
  • 打赏
  • 举报
回复
引用 14 楼 yellowshine 的回复:
要理解ssh的好处,不是一朝一夕的事,做了8个10个大型项目,才能有所体会。 首先代码即是设计,设计就是代码。考虑周全的设计、封装良好的框架,即是没有ssh一样不会差。 ssh最大的贡献是其思想而非发布出来的jar包。了解struts的产生背景和mvc模式,hibernate的orm思想,spring的面向对象、依赖注入、实现依赖接口而非接口实现依赖等等,这些远比代码本身重要。如何体会这些思想的重要性?很简单,不用struts,用jsp+servlet写一个web程序,稍大一点有二三十个功能的,不要helloworld,体会一下mvc的好处。写一个有二三十张表的应用程序,不用hibernate,看看难度如何。 也许你还是可以说,没有struts、hibernate我仍然可以很好地完成程序,的确,程序本身难度并不大,只要足够细心,程序最终可以完成。这就是另一层次的问题了,做为程序员的我们,应该把精力放在什么地方,一个一个地去对entity属性与数据库字段,一遍又一遍看看servlet的访问路径是否正确,页面上的username到服务器端不会误写成name等等。程序员的时间很宝贵,应该放在理解需求、完成良好的程序设计,而不是浪费在这种不需要动脑筋的比对名字的体力活上面。有了struts、hibernate,可以将程序员从这种无意义的活动中解脱出来,这非常有用。原因有1、实用框架能较少笔误这种低级错误,实用hibernate,加上myeclipse的自动化工具,能将错误降低到0。有过开发经验的人都知道,如果写代码花1个小时,通常找bug需要花半天的时间,而这些几乎有一半以上是笔误。2、提高开发速度,这个就不多说了。3、便于维护,如果数据库表添加了一个字段,改一下entity和映射文件,剩下的就交给hibernate完成吧。 以最少的时间,最小的工作量,完成高质量的、便于扩展的、易于维护的项目,这是框架的真正好处,需要站在软件工程的角度才能体会。
顶一个
kky2010_110 2013-05-29
  • 打赏
  • 举报
回复
引用 17 楼 AFer198215 的回复:
14#的朋友说 要做8-10个大项目 才能体会ssh的好处。 我是非常怀疑 ssh 能不能做大项目
我也怀疑,有些公司还要对ssh封装在封装,就是套一个壳而已,纯粹为了用而用,有些东西可以复用的但是能为了那个适应ssh的路径配置,非要再生成一个或者一组类,导致类库无限增大,导入项目后光包就占了好几个屏,找个类还要搜素。我的时间都浪费在找类上了,他妈的反过来赶过去找不到,别和我说ctrl+r ,ctrl+o ctrl+h,扯淡,他妈的搜索也要时间
小丑哥_V5 2013-05-28
  • 打赏
  • 举报
回复
路过看看,不作解释,具体问题具体分析,不过做了这么多项目,基本都是需要spring来管理,至于数据方面各个不同的处理方案,表现层就是各种不同的形式,从动态,到伪静态,再到静态,再到....不知道还有什么了,总结就是具体问题具体分析而已,没必要纠结,等你当上架构师的时候就知道取舍
想喝咖啡的貓 2013-05-28
  • 打赏
  • 举报
回复
14#的朋友说 要做8-10个大项目 才能体会ssh的好处。 我是非常怀疑 ssh 能不能做大项目
想喝咖啡的貓 2013-05-28
  • 打赏
  • 举报
回复
spring 可以用用 Struts 可有可无 hibernate 可以扔掉
michaelpeng7799 2013-05-27
  • 打赏
  • 举报
回复
hibernate思想好,但有些情况下的确不适用,或者效率达不到。客户不满意,就等于零。
yellowshine 2013-05-27
  • 打赏
  • 举报
回复
要理解ssh的好处,不是一朝一夕的事,做了8个10个大型项目,才能有所体会。 首先代码即是设计,设计就是代码。考虑周全的设计、封装良好的框架,即是没有ssh一样不会差。 ssh最大的贡献是其思想而非发布出来的jar包。了解struts的产生背景和mvc模式,hibernate的orm思想,spring的面向对象、依赖注入、实现依赖接口而非接口实现依赖等等,这些远比代码本身重要。如何体会这些思想的重要性?很简单,不用struts,用jsp+servlet写一个web程序,稍大一点有二三十个功能的,不要helloworld,体会一下mvc的好处。写一个有二三十张表的应用程序,不用hibernate,看看难度如何。 也许你还是可以说,没有struts、hibernate我仍然可以很好地完成程序,的确,程序本身难度并不大,只要足够细心,程序最终可以完成。这就是另一层次的问题了,做为程序员的我们,应该把精力放在什么地方,一个一个地去对entity属性与数据库字段,一遍又一遍看看servlet的访问路径是否正确,页面上的username到服务器端不会误写成name等等。程序员的时间很宝贵,应该放在理解需求、完成良好的程序设计,而不是浪费在这种不需要动脑筋的比对名字的体力活上面。有了struts、hibernate,可以将程序员从这种无意义的活动中解脱出来,这非常有用。原因有1、实用框架能较少笔误这种低级错误,实用hibernate,加上myeclipse的自动化工具,能将错误降低到0。有过开发经验的人都知道,如果写代码花1个小时,通常找bug需要花半天的时间,而这些几乎有一半以上是笔误。2、提高开发速度,这个就不多说了。3、便于维护,如果数据库表添加了一个字段,改一下entity和映射文件,剩下的就交给hibernate完成吧。 以最少的时间,最小的工作量,完成高质量的、便于扩展的、易于维护的项目,这是框架的真正好处,需要站在软件工程的角度才能体会。
oh_Maxy 2013-05-25
  • 打赏
  • 举报
回复
6L V5 啊~
享受幸福生活 2013-05-24
  • 打赏
  • 举报
回复
小虾米 苦学飘过
加载更多回复(11)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧