1. 两者最大的区别 针对简单逻辑,都有对应的代码生成工具,可以生成简单基本的dao层方法; 针对高级查询,mybatis要手动编写sql语句和resultMap,而hibernate有良好的映射机制;
2. 开发难度对比 hibernate > mybatis
3. 日志统计 hibernate有自己的日志统计功能,而mybatis需要借助log4j来记录日志。
4. 数据库扩展比较 hibernate > mybatis
5. 缓存机制比较,因为hibernate对查询对象有良好的管理机制,用户无需关心sql,所以使用二级缓存如果出现脏数据,系统会报错。而mybatis,如果不能获取最新数据,应该避免缓存的使用,脏数据的出现会给系统的正常运行带来很大的隐患。
6. 如何选择mybatis需要编写sql和映射规则,工作量大于hibernate; mybatis支持的工具也有限,不能像hibernate那样有许多插件可以帮助生成映射代码和关联关系; 对于性能要求不太苛刻的系统,比如管理系统、ERP等推荐hibernate; 对于性能要求高、响应快、灵活的系统,比如电商系统,推荐使用mybatis;