mybatic

Mybatis和Hibernate的区别

Mybatis并不是一个完全的orm框架。Hibernate是面向对象,可以不使用sql语句。Mybatis是面向sql语句的。专注的是输入映射返回值映射以及sql语句的灵活性。

传统:dao,daoimpl


impl:

SqlSession sqlSession = sessionFactory.openSession();      

  User user = sqlSession.selectOne("test.getUserById", id);  

     sqlSession.close();

return user;

存在问题:dao中操作数据库的代码重复。可以考虑使用模板替代。statementId存在硬编码的问题。

另一种是mapper代理方法,程序员只需要写mapper接口相当于dao接口

。查询性能,hibernate需要对性能进行优化,需要一个高手。Mybatis只需要对sql优化即可。

Hibernate具有自己的日志统计。Mybatis本身不带日志统计,使用Log4j进行日志记录。

mybatic    

session缓存,可以增强变现而且处理循环 依赖也是必须的。要开启二级缓存,你需要在你的SQL映射文件中添加一行: 

MyBatis可以进行更为细致的SQL优化,可以减少查询字段。

MyBatis容易掌握,而Hibernate门槛较高。

相同:

Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。

Hibernate和MyBatis都支持JDBC和JTA事务处理。

Hibernate优势

Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。

Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。

Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。

Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容