近来打算写一下技术总结类的博客,对自己以往的技术做一次复习和加深
mybatis和hibernate都是数据库持久层框架,之前面试经常被问到mybatis和hibernate的区别,现在问的少了,现在市面上使用mybaits的比较多,但这两个框架始终可以作为对比来学习
一、hibernate
14年的时候项目中使用了hibernate,那时候项目是spring+struts2+hibernate框架开发,现在基本忘记了hibernate的特性了,记得hibernate提供了很好的操作数据库的api,基本上就不需要写sql,当时的业务使用hibernate框架开发还是比较方便的,现在随着接触的项目和技术,感觉hibernate已经不那么合适了,随着业务逻辑的复杂,数据库表关联以及数据量的变大,系统性能就会有很多需要优化的地方,而hibernate简单的增删改查SQL都自动生成了,这一点给SQL优化就不可控,hibernate也可以自己写sql,但是这样以来个人感觉就失去了hibernate的优势。hibernate提供了完善的增删改查api,而且是数据库无关的
二、mybatis
之后开始接触mybatis,感觉mybatis是半自动化的持久层框架,相对于hibernate个人也习惯与使用mybatis,mybatis也能自动生成一些增删改查sql,mybatis框架sql都是可以轻松可见的,这样对大型项目来说,SQL优化就方便多了,而且mybatis使用起来觉得轻量很多,代码侵入也少了,mybatis上手开发应该比hibernate简单很多,mybatis提供了一级缓存和二级缓存,与hibernate一级缓存和二级缓存实现不一样