这边主要是写给那些准备去面试的(没什么经验的)应聘者看的,为了在面试中更好的回答这个问题,我做一个简单的梳理和总结。

作为一名职场新人,经历过多次的面试,由于在简历中提及了Hibernate和MyBatis,所以经常被问到。这个问题你如果真的很懂,那就可以说的很详细,如果也只是用过一点点,那就只要说个大概就行。

总结如下:

说起Hibernate和MyBatis最大的区别,用很宽泛的话讲就是hibernate是自动的,mybatis是半自动的。自动指的是hibernate因为有良好的映射机制,针对高级查询,也可以不必手动编写sql,开发者可以更关注于业务逻辑而不用担心sql的生成和结果映射。mybatis半自动指的是它在做高级查询时,必须手动写sql以及resultMap。所以说,mybatis比hibernate开发工作量大。

第二点就是在sql优化方面,hibernate默认是会把表中所有的列都查出来的,而mybatis是自己指定要查哪些列。当然,hibernate允许自己指定查什么,但是就会破坏hibernate开发的简洁性。所以mybatis在sql优化上还是比hibernate灵活的。

第三点hibernate自带日志统计,而mybatis需要依靠log4j来实现

第四点hibernate强大的数据库无关性,只需在xml文件中配置驱动和方言,就可以实现和不同数据库的交互。而mybatis的所有sql和所使用的数据库有直接关系,一旦变更数据库,那么你的sql语句基本就是要修改了。

第五点随便提一句,mybatis比hibernate更加适合开发复杂查询的项目,且更容易上手,从第一点就可以看出来。

如何回答面试中问到的Hibernate和MyBatis的区别的更多相关文章

  1. 对比JPA 和Hibernate 和 Mybatis的区别

    1.JPA.Hibernate.Mybatis简单了解 1.JPA:本身是一种ORM规范,不是ORM框架.由各大ORM框架提供实现. 2.Hibernate:目前最流行的ORM框架,设计灵巧,文档丰富 ...

  2. Hibernate 和Mybatis的区别

    Hibernate 和Mybatis的区别   1.hibernate 入门门槛高,是一个标准的ORM框架(对象关系映射),不需要程序写sql,sql语句自动生成,对sql语句进行优化.修改比较困难. ...

  3. 如何完美回答面试官问的Mybatis初始化原理!!!

    前言 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章将通过以下几点详细介绍MyBatis的初始化过程. MyBatis的初始化做了什么 MyBatis基于XML配置文件 ...

  4. hibernate与mybatis的区别

    我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和 ...

  5. Hibernate 与mybatis的区别

    转自:https://blog.csdn.net/julinfeng/article/details/19821923 为方便以后准备面试,把一些常用的技术整理出来,会不定期更新. 首先简单介绍下两者 ...

  6. hibernate和mybatis的区别

    本文出自 alicejiyayun原创 第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.NET,现在已经成为Jboss的 ...

  7. Hibernate 和 MyBatis 的区别

    Hibernate 和 MyBatis 的增.删.查.改,对于业务逻辑层来说大同小异,对于映射层而言 Hibernate 的配置不需要接口和 SQL,相反 MyBatis 是需要的.对于 Hibern ...

  8. Hibernate 和 Mybatis的区别

    第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好H ...

  9. Hibernate与 MyBatis的区别

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

随机推荐

  1. 判断标准I/O的缓冲区类型

    #include <stdio.h> void pr_stdio(const char *, FILE *); int main() { FILE *fp; fputs("ent ...

  2. centos保存rpm到本地以及使用yum完全卸载软件包

    目录 保存安装的rpm到本地 方法一: 方法二(推荐): yum卸载软件包包括依赖 保存安装的rpm到本地 方法一: [root@ServerA ~]# vim /etc/yum.conf [main ...

  3. Linux系统编程【5】——stty的学习

    从文件的角度看设备 之前几篇文章介绍的编程是基于文件的.数据可以保存在文件中,也可以从文件中取出来做处理,再存回去.不仅如此,Linux操作系统还专门为这个东西建立了一套规则,就是前期介绍的" ...

  4. C语言编程 菜鸟练习100题(01-10)

    [练习1]输出 "Hello, World!" 0. 题目: 输出 "Hello, World!" 1. 分析: 使用 printf() 输出 "He ...

  5. VMware vRealize Network Insight 6.2 发布 - 网络和安全可视化分析

    发现.优化应用安全性和网络连接解决方案并对其进行故障排除 VMware vRealize Network Insight 可帮助您跨混合和多云环境构建经过优化且高度可用的安全网络基础架构.它提供了网络 ...

  6. Step By Step(Lua环境)

    Step By Step(Lua环境) Lua将其所有的全局变量保存在一个常规的table中,这个table被称为"环境".它被保存在全局变量_G中.    1. 全局变量声明:  ...

  7. Jmeter- 笔记9 - CLI(无图形界面)

    使用CLI模式,减少资源占用 用GUI调试好脚本 在jmeter的bin文件夹运行cmd,然后输入命令:jmeter -n -t [jmx file] -l [results file] -e -o ...

  8. HTML5之WebSocket(转自知乎)

    在认识websocket之前,我们必须了解的是websocket有什么用? 他能解决我们遇到的什么问题? 如果没用,那么我们就么有使用它的必要的. websocket就是建立起全双工协议的,提高了效率 ...

  9. Pass算子python 函数

    Pass算子python 函数 函数 函数是代码的一种组织形式 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数,无返回结果 ...

  10. 如何写新的Python OP

    如何写新的Python OP Paddle 通过 py_func 接口支持在Python端自定义OP. py_func的设计原理在于Paddle中的Tensor可以与numpy数组可以方便的互相转换, ...