这个问题常常被面试官当做面试题

mybatis与hibernate喜忧参半,各有特点

Mybatis技术特点:

好处:

1、  通过直接编写SQL语句,可以直接对SQL进行性能的优化;

2、  学习门槛低,学习成本低。只要有SQL基础,就可以学习mybatis,而且很容易上手;

3、  由于直接编写SQL语句,所以灵活多变,代码维护性更好。

缺点:

4、  不能支持数据库无关性,即数据库发生变更,要写多套代码进行支持,移植性不好。

a)         Mysql:limit

b)         Oracle:rownum

5、  需要编写结果映射。

Hibernate技术特点:

好处:

1、  标准的orm框架,程序员不需要编写SQL语句。

2、  具有良好的数据库无关性,即数据库发生变化的话,代码无需再次编写。

a)         以后,mysql数据迁移到oracle,只需要改方言配置

缺点:

3、  学习门槛高,需要对数据关系模型有良好的基础,而且在设置OR映射的时候,需要考虑好性能和对象模型的权衡。

4、  程序员不能自主的去进行SQL性能优化。

Mybatis应用场景:

需求多变的互联网项目,例如电商项目。

Hibernate应用场景:

需求明确、业务固定的项目,例如OA项目、ERP项目等。

mybatis_08 mybatis与hibernate的区别的更多相关文章

  1. mybatis与hibernate的区别持久层对比【面试题】

    Mybatis技术特点: 好处: 通过直接编写SQL语句,可以直接对SQL进行性能的优化: 学习门槛低,学习成本低.只要有SQL基础,就可以学习mybatis,而且很容易上手: 由于直接编写SQL语句 ...

  2. mybatis和hibernate的区别

    1. hibernate是全自动,而mybatis是半自动 hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql.而mybat ...

  3. 面试之mybatis和hibernate的区别

    mybatis是支持普通SQL查询.存储过程和高级映射的优秀持久层框架.封装了 几乎所有的JDBC代码和参数的手工设置 ,以及结果集的检索: 封装了:1,获取连接,执行sql,释放连接. 2,sql的 ...

  4. Mybatis与Hibernate的区别

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

  5. mybatis 和hibernate的区别

    mybaits 是不完全的orm(对象关系映射(Object Relational Mapping)框架,需要自己书写sql语句 mybatis学习难度必hibernate低适合关系型模型要求不高的软 ...

  6. Mybatis和Hibernate本质区别和应用场景

    Hibernate:是一个标准ORM(对象关系映射)框架.入门门槛较高,不需要程序员写sql语句,sql语句自动生成,对sql语句优化.修改比较困难 应用场景:适用于需求变化不多的中小型项目,比如后台 ...

  7. MyBatis与Hibernate的区别?

    1.MyBatis学习成本低,Hibernate学习成本高: 2.MyBatis程序员编写SQL,Hibernate自动生成SQL:前者灵活及可优化高,后者不灵活及可优化低: 3.MyBatis适合需 ...

  8. mybatis和hibernate的区别【转】

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

  9. mybatis 和 hibernate 本质区别和应用场景

    Hibernate: 是一个标准 ORM 框架(对象关系映射).入门门槛较高,不需要程序员写 SQL,SQL语句自动生成. 对 SQL 语句进行优化.修改比较困难. 应用场景: 适用于需求变化不多的中 ...

随机推荐

  1. Python ImportError: No module named 'requests'的解决方法

    import requests报错 Python ImportError: No module named 'requests'可能是requests没有安装 安装流程 1.cmd 2.cd D:\p ...

  2. php安全编程&python测试实例编写

    前言 本文首发i春秋论坛. 本篇文章主要分享一个python暴破脚本,该脚本采用optparse模块,支持自定义字典位置:用了多线程(虽然我感觉和单线程速度差不多..是我的错觉还是线程写的不对..求表 ...

  3. 安装owncloud作为自己的云服务器

    环境:centos7,php5.6.37,apache2.4.6 首先,环境都要搭好,与之前搭wordpress网站是一样的.接下来下载程序 wget https://download.ownclou ...

  4. Linux(Ubuntu18.04)安装Chrome浏览器

    一分钟安装教程! 1.将下载源加入到系统的源列表(添加依赖) sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt ...

  5. 吴恩达机器学习笔记50-主成分分析算法(PCA Algorithm)

    PCA 减少

  6. 吴恩达机器学习笔记34-模型选择和交叉验证集(Model Selection and Train_Validation_Test Sets)

    假设我们要在10 个不同次数的二项式模型之间进行选择: 显然越高次数的多项式模型越能够适应我们的训练数据集,但是适应训练数据集并不代表着能推广至一般情况,我们应该选择一个更能适应一般情况的模型.我们需 ...

  7. 吴恩达机器学习笔记1-单变量线性回归(Linear Regression with One Variable)

    在监督学习中我们有一个数据集,这个数据集被称训练集.

  8. C++ Opencv 自写函数实现膨胀腐蚀处理

    一.膨胀腐蚀学习笔记 二.代码及结果分享 #include <opencv2/opencv.hpp> #include <iostream> using namespace s ...

  9. 全栈开发工程师微信小程序-中(下)

    全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...

  10. Java数据库操作(MySQL与SQLserver)

    在java编程开发中,数据库的开发是重头戏. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品: SQL Server是由Microsoft开发 ...