SSH(Struts,Spring,Hibernate) 和 SSM(SpringMVC,Spring,MyBatis)的区别
SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate负责持久化层;
SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,MyBatis 负责持久化层。
共同之处是是使用了Spring的依赖注入 DI 来管理各层的组件,使用了面向切面编程 AOP 来实现日志管理,权限认证,事务等通用功能的切入;
不同之处是 Struts2 和 SpringMVC 做前端控制器的区别 ,以及 Hibernate 和 MyBatis 做持久化的区别,但是 Struts2 也可以 和 MyBatis 搭配使用,SpringMVC 也可以和 Hibernate 搭配使用。
所在分层 SSH SSM
页面层(View) JSP JSP
控制器层(Controller) Struts2 SpringMVC
业务层(Service) JAVA JAVA
持久层(DAO) Hibernate Mybatis
数据库层(DB) Mysql/Oracle Mysql/Oracle
组件管理(Bean) Spring Spring
Hibernate 和 MyBatis 在 ORM 侧重点的不同
Hibernate 对数据库结构提供了较为完整的封装,Hibernate 的O/R Mapping 实现了POJO 和数据库表之间的映射,以及SQL的自动生成和执行。程序员往往只需要定义好了POJO 到数据库表的映射关系,及可通过 Hibernate 提供的方法完成持久层操作。成需要甚至不需要对 SQL 熟练掌握,Hibernate/OJB 会根据指定的存储逻辑,自动生成对应的SQL 并调用 JDBC接口加以执行。
MyBatis 的着力点,则在于 POJO 与 SQL 之间的映射关系,然后通过映射配置文件,将SQL所需要的参数,以及返回的结果字段映射到指定POJO。相对 Hibernate"O/R"而言,MyBatis 是一种 SqlMapping 的ORM实现。