数据库连接创建、释放频繁造成系统的资源浪费从而影响系统性能,可以使用数据库连接池解决此问题,之前的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的简单区别的更多相关文章

  1. Hibernate与Mybatis的概念区别

    首先简单介绍下两者的概念: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力 ...

  2. hibernate和mybatis思想,区别,优缺点

    Hibernate 简介 Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行.程序员往往只 ...

  3. 具体问题:3、hibernate跟Mybatis/ ibatis 的区别,为什么选择?

    第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀 ...

  4. hibernate跟Mybatis/ ibatis 的区别,为什么选择?(转)

    第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.NET,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R ...

  5. 如何回答面试中问到的Hibernate和MyBatis的区别

    这边主要是写给那些准备去面试的(没什么经验的)应聘者看的,为了在面试中更好的回答这个问题,我做一个简单的梳理和总结. 作为一名职场新人,经历过多次的面试,由于在简历中提及了Hibernate和MyBa ...

  6. 【JAVA框架】Hibernate 与Mybatis 区别

    Hibernate Mybatis 简介 区别 与联系 欢迎提出见解及转载. 1 简单简介     1.1    Hibernate 框架          Hibernate是一个开放源代码的对象关 ...

  7. Hibernate与MyBatis区别

    Hibernate是当前主流的ORM框架,对数据库结构提供了较为完整的封装. MyBatis同样也是非常流行的ORM框架,主要在于pojo与SQL之间的映射关系. 区别: 1.两者最大的区别 针对简单 ...

  8. jdbc,mybatis,hibernate各自有优缺点以及区别

    JDBC: 我们平时使用jdbc进行编程,大致需要下面几个步骤: 1,使用jdbc编程需要连接数据库,注册驱动和数据库信息 2,操作Connection,打开Statement对象 3,通过State ...

  9. 框架和事务 非常 有用 hibernate和mybatis区别

    1****第一章 Hibernate与MyBatis 章 开发对比 开发学习 Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用 ...

随机推荐

  1. 使用aop和BindingResult进行参数验证

    1.在需要校验的参数名上面添加注解 2.在web层接收参数(参数前面使用@Valid进行标记,后面必须紧跟参数bindingResult,存储参数的错误信息) 3.使用aop进行校验信息统一处理 @C ...

  2. Ubuntu 16.04 install R language

    apt-get install r-base r-base-dev

  3. RAM/ROM IP一次性总结

    1, 若需要修改memory mode, 需重新编译; 若不需要修改memory mode, 直接修改宏参数即可; 2, 宏参数列表: 3, 注意用LE搭memory的情况; 4, memory ty ...

  4. 【NOIP2019模拟11.01】Game(贪心+线段树)

    Description: ​ 小 A 和小 B 在玩一个游戏,他们两个人每人有

  5. Struts2增删改查(自己思路理解)

    1:查询所有: DAO层:把所有的信息都放到list集合中.然后返回. public List<Employee> getEmployees(){ return new ArrayList ...

  6. POJ 2251 Dungeon Master(dfs)

    Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...

  7. 【Linux】【sendmail】利用sendmail发送带附件的邮件及解决邮件中文标题乱码

    #收件邮箱列表 TO_LIST=$1 #邮件标题 MAIL_TITLE=$2 #附件地址 LOG_PATH=$3 fromAdd="=?UTF-8?B?`echo $MAIL_TITLE | ...

  8. MySql 5.7.26(MySQL8)安装教程

    近期更换服务器,在此再记录一遍mysql 安装教程 1.下载 https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-commu ...

  9. jquery实现给循环的每一项加上不同的样式

    项目中需要实现这样的效果,模块中需要展示若干的商品,这些商品的分类名称需要显示不同的背景色,一共提供了三种背景色做选择, 这样的话就需要用这三种颜色做循环,一开始我的思路是做随机分配颜色,但是这样的话 ...

  10. PHP基础知识总结(三) 流程控制、函数、类对象和数据库

    PHP基础语法 1.流程控制 条件语句:if  elseif  else / switch if($a == 1){ …… } elseif ($a == 2){ …… } else{ …… } 循环 ...