注重效率不注重质量的公司很爱用SSH。SSH属于J2EE里的高级技术,
SSH:spring+Struts2+hibernate
SSM:Spring+SpringMVC+MyBaitis
两个框架都是IoC容器+MVC框架+ORM框架。IoC的意思是控制反转,意思是把创建和查找依赖对象的控制权交给容器而不是自己实例化对象;MVC框架采用MVC分层,模型层处理数据逻辑,通常是模型对象在数据库存取数据,视图层处理数据显示,控制器层处理用户交互,通常从视图读取数据,控制用户输入,并向模型发送数据;ORM框架即对象-关系映射模型,在数据库表和持久化对象间进行映射,这样在操作数据库时只需要对对象操作。
在IoC容器方面,SSH和SSM都是使用Spring。Spring是轻量级的IoC和AOP容器。IoC容器是Spring的核心,负责创建对象,管理对象,装配对象,配置对象,并且管理这些对象的整个生命周期。管理对象动态向某个对象提供其他对象,通过依赖注入来实现,Spring有三种注入方式:接口注入、Set注入和构造注入。Spring AOP即面向切面编程,可以用在日志和事务管理等方面。
MVC整合框架两者分别使用的是Struts2和SpringMVC。两者的区别:1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,因此容易实现restful API;2.Struts2是多例的,每次请求都创建一个Action,类属性被方法共享,而SpringMVC是单例的,只有一个实例,方法之间变量不共享;3.Struts2的核心控制器是Filter,SpringMVC的核心控制器是Servlet;4.拦截器方面,Struts2有自己的interceptor机制,SpringMVC用的是独立的AOP方式;5.SpringMVC是Spring的一个模块,项目管理和安全性比Struts2好,配置文件少,并且集成了Ajax,处理ajax请求,直接通过返回数据,方法中使用注解@ResponseBody,能自动将对象转换为JSON数据。
ORM框架分别用的是Hibernate和MyBaitis。MyBatis的sql语句是手动编写的,可以进行更为细致的SQL优化,可以减少查询字段,具有高度灵活,可优化,易维护的特点。但需要维护SQL和结果映射,工作量大。Hibernate面向对象查询,以对象化的思维操作数据库,hql与具体的数据库无关,移植性更好。Hibernate无需编写SQL,映射的规则也可以由IDE生成,提高了开发效率,还提供了缓存、日志、级联等强大功能。但是对于多表关联复杂SQL、数据系统权限限制、根据条件编写SQL、存储过程等十分不便,性能难以通过SQL优化。