Spring Mvc   PK  Struts

1、机制

Spring Mvc 的入口是servlet, struts 的是filter

2、性能

Spring mvc 比struts 快,Spring mvc是基于方法的设计,根据参数注解,把request注入进去,一个方法对应一个request上下文;

struts是基于类,每次都会实例一个action,然后调用get,set 方法把request注入

3、参数传递

struts在接受参数的时候,可以用属性接受参数,参数让多个方法共享

4、设计思想

struts 更加符合Oop思想,Spring Mvc在servlet上面扩展

5、intercepter实现机制

struts有自己的实现机制,SpringMvc 用的是独立的Aop方式,导致Spring mvc的配置文件比struts的小。

6、Spring mvc 支持JSR303,处理ajax请求更加方便,只需要一个注解,直接返回响应文本即可

mybatis Pk hibernate

1、开发速度方面

简单的增删改查,用hibernate;大型项目,复杂语句多的情况,用struts

2、开发工具量对比

都有响应的代码生成工具,针对高级查询,mybatis需要手动编写SQl语句,以及resultMap;hibernate有良好的映射机制,更加专注于业务流程

3、sql优化

查询方面,hibernate会有性能消耗,但是有自己的日志统计,mybatis可以手动编写sql,调整方便。使用log4j进行日志记录

4、对象管理对比

hibernate是完整的对象/关系映射解决方案,提供了对象状态管理功能,mybatis没有,需要自己进行详细的管理

5、缓存机制

hibernate 缓存:

一级缓存是session,需要对session进行严格管理;二级缓存是sessionfactory分内置缓存和外置缓存。内置缓存中存放的是SessionFactory对象的一些集合属性包含的数据(映射元素据及预定SQL语句等),对于应用程序来说,它是只读的。外置缓存中存放的是数据库数据的副本,其作用和一级缓存类似.二级缓存除了以内存作为存储介质外,还可以选用硬盘等外部存储设备,可以被所有的session共享

共同点:二级缓存除了采用系统默认的缓存机制外,都可以通过实现自己的缓存或其他第三方缓存方案创建适配器完全覆盖缓存行为

hibernate的二级缓存在sessionFactory生成的配置文件中进行详细配置

mybatis的二级缓存在具体的表-对象映射中进行详细配置,可以有不同的缓存机制。

hibernate有良好的管理机制,出现错误会提示,mybatis则不行

mybatis优势:

  1. 更为细致的SQL优化,减少查询字段
  2. mybatis更容易掌握,hibernate门槛较高

hibernate优势:

  1. dao层开发比较简单,mybatis需要维护sql和结果映射
  2. 对象维护和缓存比mybatis好,对增删该查维护方便
  3. hibernate数据库移至比较方便
  4. hibernate更好的二级缓存,使用第三方缓存,mybatis提供的第三方缓存机制不佳