Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中能够指定使用特定的参数去调用实体类的构造方法来实例化对象。
Spring的核心思想是IoC(控制反转),即再也不须要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求经过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操做。SpringMVC至关于SSH框架中struts。
mybatis
mybatis是对jdbc的封装,它让数据库底层操做变的透明。mybatis的操做都是围绕一个sqlSessionFactory实例展开的。mybatis经过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每一个类对数据库所需进行的sql语句映射。在每次与数据库交互时,经过sqlSessionFactory拿到一个sqlSession,再执行sql命令。程序员
SSH和SSM定义spring
SSH 一般指的是 Struts2 作控制器(controller),spring 管理各层的组件,hibernate 负责持久化层。sql
SSM 则指的是 SpringMVC 作控制器(controller),Spring 管理各层的组件,MyBatis 负责持久化层。数据库
共同点:1.Spring依赖注入DI来管理各层的组件。2.使用面向切面编程AOP管理事物、日志、权限等。编程
不一样点:1.Struts2 和 SpringMVC 控制器(controller)控制视图和模型的交互机制的不一样,缓存
Struts2是Action类级别,SpringMVC是方法级别,更容易实现RESTful风格。mybatis
Hibernate 和 MyBatis 两种ORM框架对比app
二者的相同点框架
Hibernate与MyBatis均可以是经过SessionFactoryBuider由XML配置文件生成SessionFactory,而后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差很少的。ide
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优化方面较弱,且入门门槛稍高。