一、hibernate与mybatis
hibernate | mybatis |
---|
ORM框架 |
JDBC的包装 |
持久层的框架 |
面向对象(hql查询) | 面向sql(动态sql) | |
级联操作 | √ | × |
日志系统 | 完整 | 相对欠缺 |
缓存 | 在SessionFactory生成的配置文件中进行二级缓存详细配置,然后再在具体的表-对象映射中配置具体哪种缓存; 在使用二级缓存时如果出现脏数据,系统会报出错误并提示 | 对不同的表可以自定义不同的缓存机制; Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现 (如果不能完全确定数据更新操作的波及范围,避免Cache的盲目使用。否则易出现脏数据) |
必须全字段映射 | √ | × |
ORM | 全自动ORM(sql不灵活) | 半自动ORM(sql灵活,可编写复杂语句) |
移植性 | 降低对象和数据库的耦合,通过设置方言数据库(xml文件配置)可以自动匹配数据库,可移植性强 | 支持多种数据库,但依赖于具体的数据库,不同数据库需要更改写的Sql,可移植性差 |
自动生成数据库表 | √ | ×(可通过逆向工程根据数据库生成实体类) |
量级 | 重量级框架(底层代码复杂,真正掌握难) | 轻量级框架(上手快) |
开发速度 | 高度封装后,开发代码量少 | 相对较慢 |
开发社区活跃度 | 高 | 低 |
二、SpringMVC与struts2
struts2 | SpringMVC | |
---|---|---|
拦截机制 | 类级别的拦截 | 方法级别的拦截 |
属性共享范围 | 所有方法 | 方法独有 |
多例(每次请求创建一个新Action实例) | 默认单例 | |
底层框架 | Fliter(StrutsPrepareAndExecuteFilter) | servlet(DispatcherServlet) |
FIiter:容器启动之后即初始化(比servlet早);服务停止以后销毁(比servlet晚) | servlet:调用时初始化,服务停止后销毁 | |
性能 | 比SpringMVC低 | 高 |
开发效率 | 比SpringMVC低 | 高 |
spring结合性 | 较SpringMVC的项目管理和安全效率低 | 无缝结合 |