SSM框架跟SSH框架比有何优势?

procedure123 2018-04-13 04:48:17
SSM框架跟SSH框架比有何优势?
...全文
13386 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
procedure123 2018-04-15
  • 打赏
  • 举报
回复
引用 6 楼 spiniper 的回复:
ssm框架和ssh框架这样来比较其实不太对,这两种比较中区别主要是两个地方的比较,其中中间层spring都是一样,所以没啥好比较的: 1 、struts2和spring-mvc的比较,说实话,两个框架我都很熟悉,struts2开发比较傻瓜一点,但是能力较弱,而且存在一些bug和漏洞(一些xss攻击不好处理,需要额外写过滤器),而且性能较差,一些对form表单提交的封装和一些页面语法的支持导致性能偏弱,spring-mvc 处理请求能力强大一些,性能高许多,而且spring-mvc能够更好的整合进入spring中,不像struts2还需要一些插件;所以综上所述,其实spring-mvc在综合能力上是远超struts2的,目前struts2基本以快被spring-mvc淘汰了。 2、mybatis和hiberante的比较,mybatis就是使用原生sql,而hiberante使用hql,之间hibernate存在hql转换sql的处理过程,从这个方面来说mybatis的整体性能优于hiberante,不过这不是决定性有事,因为这种性能差异微乎其微,而且在高并发状态也不会体现出来(有预解析和sql缓存等等技术)。mybatis的主要优势在于容易上手和学习成本低,一般来说学会sql就能很快上手,而且因为使用原生sql,对于很多复杂逻辑处理和性能优化上处理比较容易处理,因为只要关注sql就可以了,和mybatis本身关系不大。而hibernate学习成本就高很多了,因为hiberante对orm是非常彻底的支持,还有一套自己的hql语法,所有的思路吧sql的二维表的关系型数据库变成了对象型的数据思路,对于hibernate开发人员的要求,不仅仅对sql知识理解要很高,而且对Hibernate本身知识要求也很高,而且对于关系型数据库二维表数据与对象型orm数据之间的转换逻辑也要非常的熟悉,再加之hiberante内部一些相关架构也要比较熟悉,例如方言,会话,事务等等,他们和数据库的这些东西都是有区别的。不过hiberante对于系统迁移的适应性上要高出很多,用Hibernate不用为数据库之间迁移伤太多脑筋,例如oracle迁mysql或者其它数据库。至于现在流行说法,说什么hiberante性能不及mybatis,是无稽之谈,Hibernate发展这么多年,如果还有所谓性能问题,早就完蛋了。如果说是大数据,或者高并发,这就不是hiberante的问题了,我只能说你不懂大数据,当数据量合并发上升到一定级别,关系型数据库就不适用了,这根hiberante根本就无关了,mybatis也同样用不了。
从以上这位大侠的分析,基本可以判断当下ssm框架比ssh框架更有优势,最主要的还是学习成本更低。所以新入行Java EE的程序员,首选SSM框架(学习成本低,框架更优越)。
树成 2018-04-15
  • 打赏
  • 举报
回复
ssm框架和ssh框架这样来比较其实不太对,这两种比较中区别主要是两个地方的比较,其中中间层spring都是一样,所以没啥好比较的: 1 、struts2和spring-mvc的比较,说实话,两个框架我都很熟悉,struts2开发比较傻瓜一点,但是能力较弱,而且存在一些bug和漏洞(一些xss攻击不好处理,需要额外写过滤器),而且性能较差,一些对form表单提交的封装和一些页面语法的支持导致性能偏弱,spring-mvc 处理请求能力强大一些,性能高许多,而且spring-mvc能够更好的整合进入spring中,不像struts2还需要一些插件;所以综上所述,其实spring-mvc在综合能力上是远超struts2的,目前struts2基本以快被spring-mvc淘汰了。 2、mybatis和hiberante的比较,mybatis就是使用原生sql,而hiberante使用hql,之间hibernate存在hql转换sql的处理过程,从这个方面来说mybatis的整体性能优于hiberante,不过这不是决定性有事,因为这种性能差异微乎其微,而且在高并发状态也不会体现出来(有预解析和sql缓存等等技术)。mybatis的主要优势在于容易上手和学习成本低,一般来说学会sql就能很快上手,而且因为使用原生sql,对于很多复杂逻辑处理和性能优化上处理比较容易处理,因为只要关注sql就可以了,和mybatis本身关系不大。而hibernate学习成本就高很多了,因为hiberante对orm是非常彻底的支持,还有一套自己的hql语法,所有的思路吧sql的二维表的关系型数据库变成了对象型的数据思路,对于hibernate开发人员的要求,不仅仅对sql知识理解要很高,而且对Hibernate本身知识要求也很高,而且对于关系型数据库二维表数据与对象型orm数据之间的转换逻辑也要非常的熟悉,再加之hiberante内部一些相关架构也要比较熟悉,例如方言,会话,事务等等,他们和数据库的这些东西都是有区别的。不过hiberante对于系统迁移的适应性上要高出很多,用Hibernate不用为数据库之间迁移伤太多脑筋,例如oracle迁mysql或者其它数据库。至于现在流行说法,说什么hiberante性能不及mybatis,是无稽之谈,Hibernate发展这么多年,如果还有所谓性能问题,早就完蛋了。如果说是大数据,或者高并发,这就不是hiberante的问题了,我只能说你不懂大数据,当数据量合并发上升到一定级别,关系型数据库就不适用了,这根hiberante根本就无关了,mybatis也同样用不了。
沁海棠 2018-04-15
  • 打赏
  • 举报
回复
引用 4 楼 spiniper 的回复:
[quote=引用 2 楼 qinhaotong 的回复:] hibernate可以快速开发但是由于sql都是自动的不好优化, mybatis可以sql优化,但是开发相对较慢.sql都自己写 Struts2 配合值栈开发很方便,请求都是配置文件中配置, 感觉有点麻烦; springMVC 注解映射请求方便,但是传值啥的相对没struts2方便; ssh适合快速开发并发不高的网站, 如果有错误请大神指出
hibernate一样可以优化,hql和sql的执行方式是一样的,只是屏蔽了一些方言而已,和sql的读写逻辑相同,更高级的数据库优化不在sql语法层面,所以这个锅也不能甩给hiberante。另外,ssh一样可以适用于高并发,是否支持高并发取决于你的整体架构设计,而不是开发框架选型,ssh发展了这么多年,已经适用于大部分情况,不存在不适合高并发的说法。[/quote] 受教了
树成 2018-04-15
  • 打赏
  • 举报
回复
引用 2 楼 qinhaotong 的回复:
hibernate可以快速开发但是由于sql都是自动的不好优化, mybatis可以sql优化,但是开发相对较慢.sql都自己写 Struts2 配合值栈开发很方便,请求都是配置文件中配置, 感觉有点麻烦; springMVC 注解映射请求方便,但是传值啥的相对没struts2方便; ssh适合快速开发并发不高的网站, 如果有错误请大神指出
hibernate一样可以优化,hql和sql的执行方式是一样的,只是屏蔽了一些方言而已,和sql的读写逻辑相同,更高级的数据库优化不在sql语法层面,所以这个锅也不能甩给hiberante。另外,ssh一样可以适用于高并发,是否支持高并发取决于你的整体架构设计,而不是开发框架选型,ssh发展了这么多年,已经适用于大部分情况,不存在不适合高并发的说法。
weixin_41368339 2018-04-13
  • 打赏
  • 举报
回复
mybatis比Hibernate更灵活,好用
沁海棠 2018-04-13
  • 打赏
  • 举报
回复
hibernate可以快速开发但是由于sql都是自动的不好优化, mybatis可以sql优化,但是开发相对较慢.sql都自己写 Struts2 配合值栈开发很方便,请求都是配置文件中配置, 感觉有点麻烦; springMVC 注解映射请求方便,但是传值啥的相对没struts2方便; ssh适合快速开发并发不高的网站, 如果有错误请大神指出
迷途的码农 2018-04-13
  • 打赏
  • 举报
回复
SSH框架是Struct+Spring+Hibernate而SSM是指的Spring-MVC+Spring+MyBatis,光从这两个缩写就可以看出来,如果比较两者的区别的话主要比较Struct和Spring-MVC以及Hibernate和MyBatis: 1.Struct和Spring-MVC都是负责取转发的,但是两者针对request的请求上面区别很大,Struct是针对一个Action类来进行请求的,即一个Action类对应于一个请求,所以类拦截,请求的数据类共享。而Spring-MVC则是针对于方法级别的请求的,也就是一个方法对应于一个请求,属于方法拦截,请求的数据方法不共享。 2.Spring-MVC的配置文件相对来说较为少,容易上手,可以加快软件开发的速度,亲身体验有效。 3.Spring-MVC的入口是Servlet级别的而Struct的级别是Filter级别的。 针对Hibernate和MyBitas对持久化类进行操作,他们之间的区别可以整理如下: 1.Hibernate是一种O/R关系型,即完成数据库表和持久化类之间的映射,而MyBitas是针对的SQL-Maping,个人理解是一种Hibernate把数据库给封装好以后,可以调用相应的数据库操作语句HQL,而MyBitas则是用的原始的数据库操作语句。 2.基于1中的原因,则Hibernate优化起来相对MyBitas较难。 3.MyBitas入门较快,而Hibernate掌握起来相对较难。 4.针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。 5.Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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