SSH和SSM对比总结
Java开发之路 2016-10-18 11:19
当下流行的两种企业开发MVC开源框架,是我们Java程序猿必备知识能力。MVC,即模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。框架之所以流行,在于其易复用和简化开发,精髓在思想,掌握了核心思想,我们掌握其他类似框架也不会有问题,建议大家有精力的话读一下框架源码,尤其是Spring。
SSH和SSM定义
SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层。
SSM 则指的是 SpringMVC 做控制器(controller),Spring 管理各层的组件,MyBatis 负责持久化层。
共同点:1.Spring依赖注入DI来管理各层的组件。2.使用面向切面编程AOP管理事物、日志、权限等。
不同点:1.Struts2 和 SpringMVC 控制器(controller)控制视图和模型的交互机制的不同,
Struts2是Action类级别,SpringMVC是方法级别,更容易实现RESTful风格。
SSH 和 SSM 的实现原理
1.Struts2 的实现原理
Struts2框架执行步骤(Struts2使用Filter嵌入):
1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。
9、将处理结果返回给客户端
2.SpringMVC 的实现原理
SpringMVC框架执行步骤(SpringMVC使用Servlet嵌入):
1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。
3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。
5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。
6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。
7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。
Hibernate 和 MyBatis 两种ORM框架对比
两者的相同点
Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。
Hibernate和MyBatis都支持JDBC和JTA事务处理。
两者各自优势
MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
MyBatis容易掌握,而Hibernate门槛较高。
Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳,更新操作不能指定刷新指定记录,会清空整个表,但是也可以使用第三方缓存。
Hibernate 封装性好,屏蔽了数据库差异,自动生成SQL语句,应对数据库变化能力较弱,SQL语句优化困难。
MyBatis仅实现了SQL语句和对象的映射,需要针对具体的数据库写SQL语句,应对数据库变化能力较强,SQL语句优化较为方便。
总结
SSM和SSH不同主要在MVC实现方式,以及ORM持久化方面不同(Hiibernate与Mybatis)。SSM越来越轻量级配置,将注解开发发挥到极致,且ORM实现更加灵活,SQL优化更简便;而SSH较注重配置开发,其中的Hiibernate对JDBC的完整封装更面向对象,对增删改查的数据维护更自动化,但SQL优化方面较弱,且入门门槛稍高。
附Spring家族:
SSH和SSM对比总结相关推荐
- Java面试题:SSH和SSM原理对比总结以及牵扯到的面试问题
当下流行的两种企业开发MVC开源框架,是我们Java程 序猿必备知识能力.MVC是Model-View-Controller的简写."Model" 代表的是应用的业务逻辑dao层. ...
- Java Web框架对比SSH和SSM
SSH:Spring+Struts2+Hibernate SSM:Spring+SpringMVC+MyBaitis 两个框架都是IoC容器+MVC框架+ORM框架. IoC的意思是控制反转,意思是把 ...
- SSH与SSM的区别以及相关技术的流行度
先来百度一下,看看目前在流行啥 百度搜索搜索关键词 百度返回数量 SSM Java SSH Java 可以看到是SSM胜出. 所在分层 SSH SSM 页面层(View) JSP JSP(已经被thy ...
- Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较
SSH和SSM定义 SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层. SSM 则指的是 SpringMVC 做控制 ...
- SSH与SSM学习之SSH实现CRM练习17——添加客户拜访记录和列表
SSH与SSM学习之SSH实现CRM练习17添加客户拜访记录和列表 一添加客户拜访记录和列表演示 1 添加客户拜访记录演示 2 客户拜访记录列表演示 二添加客户拜访记录分析 三添加客户拜访记录表实体关 ...
- SSH和SSM的区别(springmvc简介)
SSH和SSM的区别:当下流行的两种企业开发MVC开源框架. SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层. S ...
- SSH与SSM框架的差别
SSH和SSM的相同与不同之处 SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层. SSM 则指的是 SpringM ...
- 面试题:SSH 和 SSM 两个框架的浅显的区别?
概述 本人使用过SSH框架一段时间,最后在优化项目的时候决定使用SSM框架,这两种框架的一些浅显的区别我在这里说下. SSH框架是Struts+Spring+Hibernate而SSM是指的Sprin ...
- SSH 和 SSM 有什么区别?
SSH框架是Struts+Spring+Hibernate而SSM是指的Spring-MVC+Spring+MyBatis,光从这两个缩写就可以看出来,如果比较两者的区别的话主要比较Struct和Sp ...
- java和ssm是什么关系,JAVA --- SSH和SSM的区别
SSH(Struts,Spring,Hibernate) 和 SSM(SpringMVC,Spring,MyBatis)的区别 SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层 ...
最新文章
- java 中向文本写入和读取hashmap_就靠这一篇HashMap的讲解,我与头条面试官聊了一个小时。...
- LNMP单机高并发的简单优化
- php如何编写通信协议,定制通讯协议
- Eclipse For JavaSE安装、配置、测试
- Oracle 10g、11g :RAC关闭、启动、重启步骤
- 光电自动避障小车_AGV机器人:基于视觉避障的理论基础
- 动画:用动画给面试官解释 TCP 三次握手过程
- Qt 绘制炫彩滚动文本
- Win 10 关闭系统自动更新(解决svchost.exe 占用网络问题,解决svchost.exe不断消耗流量问题)
- Exception:org.eclipse.m2e.wtp.MarkedException: Unable to configure OHBC
- 张飞流水帐(完整版)
- 汉语韵律短语切分方法初探
- python股票策略_基于python的股票自动盯盘程序
- poi动态合并内容相同的单元格
- 网页要让它自适应各种手机屏幕宽度大小要怎么设置
- 【奥卡姆剃刀】一条短信骗走所有财产的分析
- oracle报错7001,Oracle 10g expdp导出报错ORA-4031的解决方法
- iText7 HTML to PDF 支持中文 支持加粗
- 安卓系统的电视机_2020年电视机最强选购指南,含15款高性价比电视机集合大推荐(2020年7月份更新)...
- RFID技术在口岸监管有哪些应用