最近面试遇到一个问题,面试官问你们项目使用 mybatis 还是 hibernate?我说当然使用现在主流的 mybatis 了。面试官继续问:为什么不使用 hibernate?说下原因,以及这两个框架的区别?......
最后我虽然是回答出来了面试官的问题,但是还是感觉到回答到的不够完善?自己想下?问什么呢?主流?难道大家都在用我也跟着大家用?原因是什么?要一探究竟了。
本菜鸟简单理解觉得两个框架区别如下:
第一点区别:hibernate 有完整良好的映射机制不用自己手动写 sql,开发者不用担心自己 sql 生成只需要专注自己的业务逻辑即可。mybatis在做查询时候需要自己手写 sql 和 resultMap,简单来说 mybatis 开发量比较大一点,但 mybatis 比 hibernate 更适合复杂查询的项目。
从开发速度上来区分说,如果项目复杂查询较少,就是简单的查询这样使用 hibernate 开发速度较快,因为简单的 sql 语句已经帮你封装好了。但是如果大型项目,复杂语句较多,这样使用 mybatis 开发就会快很多,而且对 sql 语句的管理来说也比较方便。
第二点区别:hibernate 进行查询时候会把所有字段都查询出来,查询性能有一定消耗。mybatis 可以指定查询的字段,在 sql 优化方面是比较灵活的。
第三点区别:hibernate自带日志功能,mybatis 需要 log4j 来实现。
第四点区别:hibernate 配置数据库连接时候自需要配置数据库驱动和数据方言,即可和数据库完成连接进行数据交互。mybatis 所有 sql 都和数据库有关系,如果完成数据库迁移就很麻烦了。
所以:hibernate 适合需求变化不多的中小型项目。传统项目等 oa.....
mybatis 适合需求变化较多的项目。互联网项目等....
综上所述就是以上简单的几个小区别。先总结到这里以后学习中会继续补充。
水平有限,若有问题请留言交流!
互相学习,共同进步 :)转载请注明出处谢谢!