SSH框架:
struts+spring+hibernate的一个集成框架
SSM框架:
(SpringMVC+Spring+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)
SSH搭建:
请求流程:StrutsPrepareAndExecuteFilter-->ActionMapping-->Action-->Result-->jsp
1.pom.xml引入struts2-core、struts2-convention包
2.在web.xml配置StrutsPrepareAndExecuteFilter
3.编写HelloAction
包路径必须为xxx.action下,类命名为XxxAction格式
4.配置Action+Result
注解配置
以前xml配置
5.编写hello.jsp(在src/main/webapp下)
Struts2的实现原理:
SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate
负责持久化层.
SSM搭建:
请求流程:DispatcherServlet-->HandlerMapping-->Controller-->ViewResolver-->jsp
先集成Spring和Mybatis:
1.建立一个项目,导入jar包(ioc,aop,mybatis,mybatis-spring,dao,orm,
连接池,驱动)。拷贝配置文件到src下。
2.编写实体类。
3.编写sql定义文件,比如:(根据id查询账户)
4.根据Mapper映射器编写DAO接口
5.在Spring容器中配置MapperScannerConfigurer(会用到
SQLSessionFactory),批量获取DAO接口的实现类。测试
6.包装一个service对象,组件扫描,注入DAO接口的实现类.测试 -M层
搭建一个MVC的环境(基于标注的SpringMVC):
1.建项目、导jar包(ioc/mvc/aop)并拷贝配置文件到src下
2.在web.xml中配置DispatcherServlet
3.在Spring配置文件中开启组件扫描(底层依赖于aop)和开启标注形式
的MVC(自动生成了HandlerMapping的实现类对象
RequestMappingHandlerMapping)。
4.编写控制器(不用实现Controller接口,就是一个普通的类)
5.配置视图解析器
SpringMVC 的实现原理:
SSM 则指的是 SpringMVC 做控制器(controller),Spring 管理各层的组件,My
Batis 负责持久化层
区别:
他们最大的区别在于hibernate与mybatis的区别。
-Hibernate与mybatis区别,mybatis更为轻便、灵活,容易掌握。mybatis可以把sql语句从Java代码中分离了出来,放在了配置文件中书写,大大降低里java代码与SQL语句的耦合度,更容易对sql语句操作,重要的是mybatis还可以书写动态的sql语句,但mybatis也存在一些缺陷,比如mybatis本身的缓存机制没有hibernate那么完善,hibernate除了本身有良好的缓存机制,还可以使用第三方缓存。Hibernate较完整的封装了JDBC,但学起来要比mybatis更困难一些。Hibernate的DAO层开发比MyBatis简单,对对象的维护和缓存要比MyBatis好。
-Springmvc与Struts的区别:Struts2是类级别的拦截,一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时跟一个url对应,所以说从框架本 身上SpringMVC容易实现 restful 相对而言Struts2架构起来就比较费劲,因为Struts2中Action的一个方法 对应一个url而其类属性却被所有方法共享,这就无法用注解或其它标住其所属方法。SpringMVC的方法之间基本上是独立的,入口是servlet集成了AJAX和Spring无缝衔接,支持JSR303用的是 Aop拦截实现机制设计思想上Struts2更符合OOP编程思想,SpringMVC开发效率和性能高于Struts2SpringMVC 可以认为是100%零配置。
Hibernate 和 MyBatis 两种ORM框架对比:
两者的相同点:
Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置
文件生成SessionFactory,然后由SessionFactory 生成Session,最
后由Session来开启执行事务和SQL语句。其中SessionFactory
Buider,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家族: