SSH:Spring+Struts+Hibernate
Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层
SSM:Spring+SpringMVC+MyBatis
SpringMVC 做控制器(controller),Spring 管理各层的组件,MyBatis 负责持久化层
共同点:
- Spring依赖注入DI来管理各层的组件
- 使用面向切面编程AOP管理事物、日志、权限等
- Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的
- Hibernate和MyBatis都支持JDBC和JTA事务处理。
不同点:
- .Struct和Spring-MVC都是负责取转发的,控制器(controller)控制视图和模型的交互机制的不同,两者针对request的请求上面区别很大,Struct是针对一个Action类来进行请求的,即一个Action类对应于一个请求,所以类拦截,请求的数据类共享。而Spring-MVC则是针对于方法级别的请求的,也就是一个方法对应于一个请求,属于方法拦截,请求的数据方法不共享。SpringMVC是方法级别,更容易实现RESTful风格。
- Spring-MVC的入口是Servlet级别的而Struct的级别是Filter级别的。
- Spring-MVC的配置文件相对来说较为少,容易上手,可以加快软件开发的速度。
- 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优化方面较弱,且入门门槛稍高。
405

被折叠的 条评论
为什么被折叠?



