Mybatis与Hibernate区别
【摘要】 MybatisHibernateBoth量级轻量级,上手简单,插件多重量级,功能齐全,精通较难SQL自由度高。提供更灵活的SQL编写方式。低。仅对基本的SQL语法有较好支持。不过Hibernate也支持自己手动写SQL。都支持编写SQL开发效率低。需要维护SQL。高。DAO层开发更简单,支持JPA。数据库无关性差。所有SQL都是依赖数据库书写的,需要针对特定数据库维护SQL。好。高度解耦,封...
Mybatis | Hibernate | Both | |
---|---|---|---|
量级 | 轻量级,上手简单,插件多 | 重量级,功能齐全,精通较难 | |
SQL自由度 | 高。提供更灵活的SQL编写方式。 | 低。仅对基本的SQL语法有较好支持。不过Hibernate也支持自己手动写SQL。 | 都支持编写SQL |
开发效率 | 低。需要维护SQL。 | 高。DAO层开发更简单,支持JPA。 | |
数据库无关性 | 差。所有SQL都是依赖数据库书写的,需要针对特定数据库维护SQL。 | 好。高度解耦,封装了JDBC的实现,只需在配置中指定数据库。 | |
缓存 | 自身的缓存机制较差。 | 自身的缓存机制较好,可避免脏读。 | 都可以对具体的表-对象映射配置缓存,都支持二级缓存,且都支持第三方缓存机制 |
映射 | POJO与SQL的映射,将SQL所需的参数、返回的结果字段映射到指定POJO,半ORM,实际是SQL mapping | POJO与数据库表的映射,自动生成和执行SQL,完全的ORM | |
性能 | 稍高 | 用封装方法性能会降低一点(SQL生成、全字段查询),用Native查询方法性能与Mybatis差不多 | |
适用场景 | 擅长复杂的查询,适用于分析型系统。计算机集群需要跨数据库事务时,Mybatis更灵活。 | 面向对象的思维方式更有利于业务系统建模分析,适合单数据库,数据量小,无多表关联,数据库结构不稳定的项目。 |
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)