mybaits与hibernate区别
mybatis:小巧、方便、高效、简单、直接、半自动
hibernate:强大、方便、高效、复杂、绕弯子、全自动
1. hibernate是全自动,而mybatis是半自动
hibernate完全可以通过JavaBean对象与数据库的映射结构来自动生成sql。
mybatis 需要手写sql
2. 数据库移植
hibernate的映射结构和hql语言,更换数据库(oracle,mysql)容易
而mybatis由于需要手写sql,数据库更换比较需要消耗成本
3. 日志系统
hibernate日志系统非常健全包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告
mybatis则除了基本记录功能外,功能薄弱很多。
4. 细节问题
hibernate配置多,很多都封装好直接调用
mybatis开发模式上与传统jdbc区别很小,考虑细节需要比较多
5. sql直接优化上
由于mybatis的sql都是写在xml里,优化容易
而hibernate的sql很多都是自动生成的,无法直接维护sql;
mybatis:
1. 入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。
2. 可以进行更为细致的SQL优化,可以减少查询字段。
3. 缺点查询要自己写的,工作量也比较大,可用代码生成工具
4. 二级缓存机制不佳。
hibernate:
1. 数据库无关性好,O/R映射能力强,封装强的代码,代码量少
2. 有更好的二级缓存机制,可以使用第三方缓存。
3. 缺点就是学习门槛不低,要精通门槛更高
举个形象的比喻:
mybatis:机械工具,使用方便,拿来就用,但工作还是要自己来作,不过工具是活的,怎么使由我决定。
hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。