这边主要是写给那些准备去面试的(没什么经验的)应聘者看的,为了在面试中更好的回答这个问题,我作一个简单的梳理和总结。面试
做为一名职场新人,经历过屡次的面试,因为在简历中说起了Hibernate和MyBatis,因此常常被问到。这个问题你若是真的很懂,那就能够说的很详细,若是也只是用过一点点,那就只要说个大概就行。sql
提及Hibernate和MyBatis最大的区别,用很宽泛的话讲就是hibernate是自动的,mybatis是半自动的。自动指的是hibernate由于有良好的映射机制,针对高级查询,也能够没必要手动编写sql,开发者能够更关注于业务逻辑而不用担忧sql的生成和结果映射。mybatis半自动指的是它在作高级查询时,必须手动写sql以及resultMap。因此说,mybatis比hibernate开发工做量大。数据库
第二点就是在sql优化方面,hibernate默认是会把表中全部的列都查出来的,而mybatis是本身指定要查哪些列。固然,hibernate容许本身指定查什么,可是就会破坏hibernate开发的简洁性。因此mybatis在sql优化上仍是比hibernate灵活的。mybatis
第三点hibernate自带日志统计,而mybatis须要依靠log4j来实现优化
第四点hibernate强大的数据库无关性,只需在xml文件中配置驱动和方言,就能够实现和不一样数据库的交互。而mybatis的全部sql和所使用的数据库有直接关系,一旦变动数据库,那么你的sql语句基本就是要修改了。hibernate
第五点随便提一句,mybatis比hibernate更加适合开发复杂查询的项目,且更容易上手,从第一点就能够看出来。日志