Hibernate与Mybatis的简单区别
数据库连接创建、释放频繁造成系统的资源浪费从而影响系统性能,可以使用数据库连接池解决此问题,之前的java应用程序sql语句也是写在java代码中造成系统可维护性差,实际应用的sql变化较大,sql变动需要改变代码;向sql语句中传入参数麻烦,因为sql语句的where条件不一定,占位符需要和参数一一对应,否则会造成错误,对查询的结果集解析较为麻烦,sql变化导致解析代码发生变化,且解析前需要遍历,致力于将数据库记录封装成POJO对象,Hibernate和Mybatis是常用的两款ORM框架
一、Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了较深层次的封装,建立了对象与数据表的映射。是一个全自动化的、完全面向对象的持久层框架,对数据库提供了较为完整的封装
二、Mybatis
Mybatis是一个开源关系映射框架,原名ibatis,2010年由谷歌接管以后更名。是一个半自动化的持久层框架,主要着力与POJO与SQL之间的映射关系
三、区别
1.开发速度
Hibernate的开发难度要比Mybatis大,主要是因为他对JDBC比较深的封装,比较复杂、庞大、开发周期比较长,但是对于关系模型高的软件(例如需求固定的定制化软件)如果用gHibernate可以节省很多代码,提高效率。
Mybatis要比Hibernate更容易上手,主要依赖与原生态的sql书写,让开发者感到更熟悉,上手速度快,这也是为什么Mybatis更加流行的原因,。
2.SQL
Hibernate的sql语句被封装,可以直接使用,加快系统开发。但是在一些自动生成的sql语句有些较为繁琐,会消耗一些性能。
Mybatis的sql语句需要手工完成,稍微繁琐,属于半自动化,可以避免不必要的查询字段,提高系统性能。这也是为什么Mybatis较Hibernate更为灵活的原因,Mybatis可以严格控制sql执行性能,灵活度高
3.数据库扩展性
Hibernate通过强大的映射结构和HQL语言,大大降低了数据库(Oracle、MySQL等)的耦合性,数据库移植性好
Mybatis由于SQL语句多为依赖数据库写的,所以扩展性、数据库移植性差,需要根据不同的数据库编写不同的SQL语句。
4.缓存机制
Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。
Hibernate具有三级缓存,以及缓存是Session缓存,是默认开启的,以及缓存与Session的生命周期相关;二级缓存是SessionFactory级的缓存,可以分为内置缓存和外置缓,其中的内置缓存存放了一些关于SessionFactory对象的一些集合属性包含的数据,包括映射元数据及预定的SQL语句等;三级缓存可以结合业界流行的缓存技术:如Redis、ecache等
Mybatis的一级缓存是SqlSession级别的缓存;二级是mapper级别的缓存,多个SqlSession共享,而他也是默认开启以及缓存,但是总体来说Mybatis的缓存机制不佳,这也很大程度的限制了Mybatis的推广
5.对象管理
Hibernate具有完整的对象/关系映射解决方案,对象管理功能也比较完善,采用了更自然的面向对象的视角来持久化JAVA应用中的数据,开发者无需关心SQL的生成与结果映射,可以更关注与业务流程
Mybatis仅有基本的字段映射,对象数据以及对象实际关系任然需要手写sql来实现和管理
6.日志
Hibernate拥有完整的日志系统,非常健全,设计 sql记录、关系异常、优化警告、缓存提示、脏数据警告等
Mybatis除了基本记录功能以外,功能薄弱很多,可以通过其他日志系统如Log4j来进行日志记录
参考:http://baijiahao.baidu.com/s?id=1597148284865632440&wfr=spider&for=pc
http://m.680.com/gonglue/info-121231.html
Hibernate与Mybatis的简单区别的更多相关文章
- Hibernate与Mybatis的概念区别
首先简单介绍下两者的概念: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力 ...
- hibernate和mybatis思想,区别,优缺点
Hibernate 简介 Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行.程序员往往只 ...
- 具体问题:3、hibernate跟Mybatis/ ibatis 的区别,为什么选择?
第一章 Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀 ...
- hibernate跟Mybatis/ ibatis 的区别,为什么选择?(转)
第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.NET,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R ...
- 如何回答面试中问到的Hibernate和MyBatis的区别
这边主要是写给那些准备去面试的(没什么经验的)应聘者看的,为了在面试中更好的回答这个问题,我做一个简单的梳理和总结. 作为一名职场新人,经历过多次的面试,由于在简历中提及了Hibernate和MyBa ...
- 【JAVA框架】Hibernate 与Mybatis 区别
Hibernate Mybatis 简介 区别 与联系 欢迎提出见解及转载. 1 简单简介 1.1 Hibernate 框架 Hibernate是一个开放源代码的对象关 ...
- Hibernate与MyBatis区别
Hibernate是当前主流的ORM框架,对数据库结构提供了较为完整的封装. MyBatis同样也是非常流行的ORM框架,主要在于pojo与SQL之间的映射关系. 区别: 1.两者最大的区别 针对简单 ...
- jdbc,mybatis,hibernate各自有优缺点以及区别
JDBC: 我们平时使用jdbc进行编程,大致需要下面几个步骤: 1,使用jdbc编程需要连接数据库,注册驱动和数据库信息 2,操作Connection,打开Statement对象 3,通过State ...
- 框架和事务 非常 有用 hibernate和mybatis区别
1****第一章 Hibernate与MyBatis 章 开发对比 开发学习 Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用 ...
随机推荐
- CSS中强大的EM(转)
转自:https://www.w3cplus.com/css/px-to-em CSS中强大的EM 作者:大漠 日期:2011-10-27 点击:97370 em 长度单位 编辑推荐:3月31日前,点 ...
- ajax+node实现图片上传
利用formData实现ajax上传图片后,保存图片到指定收藏夹,然后展示新重命名后的图片 html: <input type="file" id="uploadI ...
- reduce 好东西
reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?这个问题,之前我也想过,要说原因还真找不到,唯一能找到的是:通往成功的道路有很多,但 ...
- @HttpEntity参数(怪异)
1).在Controller中写 与@RequestBody请求体对应 @HttpEntity更强大,不光有请求体,还能获取请求头 @RequestMapping("/test02" ...
- JavaSE---Annotation
1.概述 1.1 JDK1.5开始,java提供了对Annotation的支持: 1.2 Annotation其实就是 代码中的特殊标记,这些标记 可以在编译.类加载.运行时被读取,并执行相应的处理: ...
- C# 在Word表格中插入新行(表格含合并行)
public string CreateWordFile(string CheckedInfo) { string message = "" ...
- CSP2019赛前小复习:
虽然觉得复习也没有什么用,还不吃好睡好,保持好心情. SA: 坑就那几个. \(s[0]=s[n+1]=-1\). 和\(rank\)交换的\(tp\)数组的\(tp[n+1]=0\). 一般加上这两 ...
- 【NOIP2019模拟2019.10.07】果实摘取 (约瑟夫环、Mobius反演、类欧、Stern-Brocot Tree)
Description: 小 D 的家门口有一片果树林,果树上果实成熟了,小 D 想要摘下它们. 为了便于描述问题,我们假设小 D 的家在二维平面上的 (0, 0) 点,所有坐标范围的绝对值不超过 N ...
- 关于scrub的详细分析和建议
https://ceph.com/planet/%E5%85%B3%E4%BA%8Escrub%E7%9A%84%E8%AF%A6%E7%BB%86%E5%88%86%E6%9E%90%E5%92%8 ...
- qt学习(二):启动画面
打开一个软件,都会有启动画面. 现在去体验如何实现启动画面:输入图,装载,延时,下一张主部件图 在main.Cpp中实现启动时桌面图片. #include <QtGui/QApplication ...