Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便,Hibernate的代码比较简洁。
Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL,比如分页,mybatis因为SQL是自定义的,所以物理分页的话需要自己针对数据库类型进行判断和分页sql拼接,比如oracle拼个rownum,mysql拼个limit,这样采用切入的实现是最合适的 。
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳,但mybatis可以借用第三方缓存去实现业务。
Mybatis优势
MyBatis可以进行更为细致的SQL优化,可以减少查询字段,Hibernate的后期sql优化需要开发者对Hibernate的掌握比较好才能进行。
MyBatis容易掌握,只要sql语句掌握的还不错,基本很短时间入门,而Hibernate门槛较高(这里的高是说对她的深入使用,如果只做单纯的小项目,增删改查,hql语句较之于mybatis分分钟秒杀它)。