Hibernate与MyBatis区别
Hibernate是当前主流的ORM框架,对数据库结构提供了较为完整的封装。
MyBatis同样也是非常流行的ORM框架,主要在于pojo与SQL之间的映射关系。
区别:
1、两者最大的区别
针对简单逻辑,Hibernate与MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。
针对高级查询,MyBatis需要手动编写SQL语句,以及ResultMap,而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于流程。
2、开发难度对比
Hibernate的开发难度大于MyBatis,主要由于Hibernate比较复杂,庞大,学习周期比较长。
MyBatis则相对简单,并且MyBatis主要依赖于生气了的书写,让开发者刚进更熟悉。
3、sql书写比较
MyBatis的sql是手动编写的,所以可以按照要求指定查询的字段,不过没有自己的日志统计,所以要借助Log4j来记录日志。
Hibernate也可以自己写sql来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性,不过Hibernate具有自己的日志统计。
4、数据库扩展性计较
MyBatis由于所有sql都是依赖数据库书写的,所以扩展性、迁移性比较差。
Hibernate与数据库具体的关联在XML中,所以HQL对具体是用什么数据库并不是很关心
5、缓存机制比较
相同点:Hibernate和MyBatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存成为其它第三方缓存方案,创建适配器来覆盖缓存行为。
不同点:Hibernate的二级缓存配置在SessionFactory生成配置文件中进行详细配置,然后再在具体的表对象映射中配置那种缓存。
MyBatis的二级缓存配置都是在每个具体的表对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓冲机制,并且MyBatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。
两者比较,因为Hibernate对查询对象有着良好的管理机制,用户无需关心SQL,所以在使用二级缓存时如果出现脏数据,系统会报出错误提示。
而MyBatis在这一方面使用二级缓存时需要特别小心,如果不能完全去顶数据更新操作的波及范围,避免cache的盲目使用,否则,脏数据的出现会给系统的正常运行带来很大的隐患。
6、总结
Hibernate与MyBatis都可以通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session来开启执行事务和SQL语句。
而MyBatis的优势是MyBatis可以进行更为细致的SQL优化,可以减少查询字段,并且容易掌握。
Hibernate的优势是Dao层开发比MyBatis简单,MyBatis需要维护sql和结果映射,数据库移植性,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL,有更好的二级缓存机制,可以使用第三方缓存,MyBatis本身提供的缓存机制不佳。
转载于:https://www.cnblogs.com/hedianwei/p/4570109.html
Hibernate与MyBatis区别相关推荐
- 【转】JPA、Hibernate和Mybatis区别和总结
很多人都用过java的数据库连接池C3P0,但官方没有说明名称的由来. 据传闻:连接池作者是<星球大战>迷,C3P0就是其中的一个机器人,并且这个名称中包涵connection 和pool ...
- Hibernate ,Mybatis 区别,以及各自的一级,二级缓存理解
区别: 1.Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的.MyBatis 在查询关联对象或 ...
- 框架:Hibernate和Mybatis的区别
Mybatis和hibernate不同, Mybatis不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并 ...
- JPA、Hibernate、Mybatis的区别
2019独角兽企业重金招聘Python工程师标准>>> 1.概念: Hibernate :Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装 ...
- hibernate 和 mybatis 的区别
[转载]:JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结 转载于:https://www.cnblogs.com/virgosnail/p/10054987.html
- mybatis与mysql的优点_mybatis和hibernate比较_区别_优缺点
前言 Hibernate与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8.而Mybatis相对平静,工具较少,当前最 ...
- Hibernate与MyBatis的区别
一.简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQ ...
- 聊聊Hibernate和Mybatis的区别
1.开发对比 开发速度 Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些. 个人觉得要用好Mybatis还是首先要先理解好Hibernate ...
- Hibernate和MyBatis的区别与联系
1.Hibernate 在管理系统时代,首先是实现业务逻辑,然后才是性能,所以Hibernate在当时是主流. 2.MyBatis 在移动互联网时代,MyBatis是首选,不屏蔽SQL,程序员可以自己 ...
最新文章
- 未经任何测试的源代码开放
- C语言函数集(十五)
- Oracle-锁解读
- Django + Uwsgi + Nginx 的生产环境部署
- class转java_java动态代理实现与原理详细分析
- Metal之实现视频采集与实时渲染
- linux查看网络连接命令,系统运维|使用netstat检测及监测网络连接
- BZOJ 4754 [JSOI2016]独特的树叶 | 树哈希判同构
- 9.高性能MySQL --- 操作系统和硬件优化
- python是免费的、开源的、跨平台的_NovalIDE是一款开源,跨平台,而且免费的国产Python IDE。...
- 【WIN10】清除图标缓存
- 使用Kotlin创建动态Android TextWatcher
- Word 2019 更改默认模板的字体设置
- linux下libpng库的安装以及使用
- shell之BASH_SOURCE
- 2019奥鹏四月份考试英语计算机,中石油华东2019年秋季学期《大学英语4》在线考试补考(适用于2020年4月份考试)题目【标准答案】...
- 【场景实现】Vue+element如何让帖子评论带上emoji,这个需求让我在富文本Quill开始了踩坑连连看
- F12下载网页视频(开放网页)
- 串口通信校验方式(even,odd,space,mark)UART数据波形分析
- 5g多卡聚合路由器/5g多卡汇聚路由器,多网融合,弱网通信,多卡聚合路由器,5G多卡聚合路由,工业路由器,移动物联,商用路由, 视频直播, 融合通讯, 多链路聚合,5G多卡聚合,5G多链路聚合
热门文章
- jsonview浏览器插件 查看格式化json数据
- Linux笔记-Centos7将python2升级为python3(及修改yum配置防报错)
- Web前端笔记-two.js加载图片
- C++设计模式-中介者模式
- Spring Boot笔记-目前对Web后端开发的认识
- C++ opengl 纹理过滤之GL_REPEAT
- php调用视频功能,phpcms如何调用视频?
- openssl windows安装
- 怎样在计算机中创建d盘,我在电脑D盘内新建了一个文件夹,怎么才能给 – 手机爱问...
- base href= php,如何正确定义项目下的base href(页面中所有相对链接的基准URL)...