-
Hibernate和MyBatis的区别
1、Hibernate的优/缺点
Hibernate | |
优点 |
|
缺点 |
|
2、MyBatis的优/缺点
MyBatis | |
优点 |
1、入门简单,即学即用 2、基于sQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响SQL写在XML里,解除 sql与程序代码的耦合,便于统一管理;提供 XML标签,支持编写动态SQL语句,并可重用。 3、与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; 4、很好的与各种数据库兼容(因为MyBatis 使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 5、能够与Spring很好的集成; 6、提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。 |
缺点 |
1、SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。 2、SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。 3、二级缓存机制不佳。 |
MyBatis | Hibernate | |
---|---|---|
量级: | 轻量级,上手简单,插件多 | 重量级,功能齐全,精通较难(ps:此处指的重量级是相对于MyBatis来说的,Hibernate在框架中是属于轻量级的) |
SQL自由度: | SQL自由度高。提供更灵活的SQL编写方式 | SQL自由度低,仅对基本的SQL语法有较好支持。不过Hibernate也支持自己手动写SQL。 |
开发效率: | 低。需要维护SQL。 | 高。DAO层开发更简单,支持JPA。 |
数据库无关性: | 差。所有SQL都是依赖数据库书写的,需要针对特定数据库维护SQL. | 好。高度解耦,封装了JDBC的实现,只需在配置中指定数据库。 |
缓存: | 自身的缓存机制较差。 | 自身的缓存机制较好,可避免脏读。 |
映射: | POJo与SQL的映射,将SQL所需的参数、返回的结果字段映射到指定PoJo,半ORM,实际是sQL mapping | POJO与数据库表的映射,自动生成和执行SQL,完全的ORM |
性能: | 性能稍高 | 用封装方法性能会降低一点( SQL生成、全字段查询),用封装方法性能会降低一点( SQL生成、全字段查询), |
适用场景: | 擅长复杂的查询,适用于分析型系统。计算机集群需要跨数据库事务时,Mybatis更灵活。 | 面向对象的思维方式更有利于业务系统建模分析,适合单数据库,数据量小,无多表关联,数据库结构不稳定的项目。 |
出处:https://www.cnblogs.com/z-z-s/p/15408640.html
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比