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框架相对简单很容易上手,但也相对简陋些.个人觉得要用 ...
随机推荐
- CWinThread 日志系统
CWinThread 日志系统 CWinThread 上继承写入日志 CStdioFile 继承文件
- 前端学习(二十八)es6&ajax(笔记)
ES6 let 块级作用域 const 解构赋值 字符串拼接 扩展运算符 ------------------------------------------ ...
- hbase配置详解(转)
转自:http://www.cnblogs.com/viviman/archive/2013/03/21/2973539.html 1 准备工作 因为我只有一台机器,所以,一切都成为了伪分布,但是,其 ...
- ubuntu openssl 生成密钥对
一般情况下ubuntu和mac系统都会自带openssl,安装之前先测试一下,打开终端,输入openssl,如果出现以下画面,即已安装. root@jiang:/home/kevin/work/ope ...
- 快速加载testNG 的方法
总共两步 首先建包建类建函数,这个是所有项目共同特点,不多少 1.在程序里写@Test,然后就会报错,光标放到那,然后就会有Add TestNG library的提示,点击就会将TestNG的libr ...
- 版本控制系统之SVN和GIT的区别
版本控制器的作用: 1. 可以协同代码管理,让多人开发代码得以实现. 2. 回归到以前的任何一个时间点的代码处(好比:开始写了很多代码,后面有修改了一些,突然IDE崩溃,但是发现还是以前的代码更好,这 ...
- 【纪中集训】2019.08.02【NOIP提高组】模拟 A 组TJ
\(\newcommand{\RNum}[1]{\uppercase\expandafter{\romannumeral #1\relax}}\) T1 一道可以暴力撵标算的题-- Descripti ...
- QT多线程学习
一.想要使用Qthread必须先创建,继承Qthread的类. #ifndef THREADTEST_H #define THREADTEST_H #include <QThread> # ...
- FZU 2150 Fire Game (高姿势bfs--两个起点)
Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows ...
- mybatis generator工具集成(一)
第一步,pom中加入 <build> <plugins> <plugin> <groupId>org.springframework.boot</ ...