-
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
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比