JdbcTemplate 、Mybatis、ORM 、Druid 、HikariCP 、Hibernate是什么?它们有什么关系?

学完Spring和SpringMVC之后,就急于求成的开始学习起SpringBoot而暂时忽略了Mybatis,然后在SpringBoot的学习过程中就开始对这些框架感到非常的迷惑,主要集中于一下几个东西:

JdbcTemplate MybatisORM Druid HikariCP Hibernate

以至于晕晕乎乎的看了很多博客之后连最开始学的jdbc是什么都有点迷惑了,然后最近把Mybatis学了一点之后开始对这些概念有了一些认识。

首先Druid、HikariCP是数据库连接池,那么什么是数据库连接池呢?我们为什么需要数据库连接池呢?

数据库连接池官方一点的解释就是数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。简单说就是把数据库连接的工作交给他,我们要用数据库连接的时候就找他要,就是这么简单一回事。

那我们为什么需要数据库连接池呢?那我们先来分析一下当你执行一个查询操作时有哪些你看不到的操作再背后默默为你这一行不负责任的代码买单

  1. TCP 建立连接的三次握手(客户端与 MySQL 服务器的连接基于 TCP 协议)

  2. MySQL 认证的三次握手(包括用户鉴权的一些操作)

  3. 真正的 SQL 执行

  4. MySQL 的关闭

  5. TCP 的四次握手关闭

这些操作涉及到网络,建立网络连接的过程对于CPU来说很慢啊,而且就算你说你用本地的数据库,你不用担心网络问题,但是还是涉及到读写磁盘的这种IO操作啊,还是很慢,我们不能接受这种慢,所以就有了数据库连接池

数据库连接池的工作机制:

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。

就是在程序初始化数据库连接池的时候就创建好了这些连接,而且无论是否使用都一直持有,当有程序想要这个连接的时候就会给你分一个连接,就不用花那么多时间和资源去重新建立一个新的连接了。

Druid和HikariCP是两种数据库连接池,前者是国货之光,是阿里巴巴的东西想想阿里巴巴旗下的产品就知道这东西肯定强,至于HikariCP,我还不是很了解,但是既然SpringBoot选择集成它,它肯定还是很强的。

那么JdbcTemplate、 Mybatis、ORM 、Hibernate又是什么东西呢?

先说说ORM,一看就知道是缩写,全称是Object Relational Mapping

直译过来就是对象关系映射

维基百科:

面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。

通俗点说就是程序员喜欢面向对象的思想,关系型数据库又是从数学理论发展而来的,就导致程序员不能开开心心的用面向对象的思想来操作数据库,就用起来很不爽(仔细想想确实是这样,就好比你要往数据库里插入一个用户,以前用原生的jdbc我们需要把用户这个实体类的每一个属性都取出来再往SQL语句里面去拼,当时就在想我为什么不能直接把这个对象传进去呢,那多方便。)然后为了解决这种不爽,ORM应运而生!

这只是简单的介绍一下,大概知道这是个什么东西就行,要知道更多关于ORM的好处什么的自行百度。

JdbcTemplate、 Mybatis、Hibernate这三个(其实还有)就是ORM映射工具。

其中由于大家天天说SSM框架,我还以为SpingBoot内置了Mybatis,其实没有,它内置的是JdbcTemplate,其实也不能说是SpringBoot内置了,Spring就把它内置了。

所以SpringBoot要想用Mybatis还是乖乖自己导吧。

JdbcTemplate 、Mybatis、ORM 、Druid 、HikariCP 、Hibernate是什么?它们有什么关系?的更多相关文章

  1. Spring + SpringMVC + Druid + JPA(Hibernate impl) 给你一个稳妥的后端解决方案

    最近手头的工作不太繁重,自己试着倒腾了一套用开源框架组建的 JavaWeb 后端解决方案. 感觉还不错的样子,但实践和项目实战还是有很大的落差,这里只做抛砖引玉之用. 项目 git 地址:https: ...

  2. 12 Spring Data JPA:orm思想和hibernate以及jpa的概述和jpa的基本操作

    spring data jpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查询 d ...

  3. spring + Mybatis + pageHelper + druid 整合源码分享

    springMvc + spring + Mybatis + pageHelper + druid 整合 spring 和druid整合,spring 整合druid spring 和Mybatis  ...

  4. atitit. orm框架的hibernate 使用SQLQuery createSQLQuery addEntity

    atitit. orm框架的hibernate 使用SQLQuery createSQLQuery addEntity 1. addEntity 对原生SQL查询运行的控制是通过SQLQuery接口进 ...

  5. spring boot 学习(五)SpringBoot+MyBatis(XML)+Druid

    SpringBoot+MyBatis(xml)+Druid 前言 springboot集成了springJDBC与JPA,但是没有集成mybatis,所以想要使用mybatis就要自己去集成. 主要是 ...

  6. Spring Boot 中使用 MyBatis 整合 Druid 多数据源

    2017 年 10 月 20 日   Spring Boot 中使用 MyBatis 整合 Druid 多数据源 本文将讲述 spring boot + mybatis + druid 多数据源配置方 ...

  7. ORM进阶之Hibernate 的三大对象

    ORM进阶之 ORM简单介绍 ORM进阶之Hibernate 简单介绍及框架搭 ORM进阶之Hibernate 的三大对象 我们在上一篇博客中讲到了怎样搭建一个Hibernate框架, 提到Hiber ...

  8. 构建第一个Spring Boot2.0应用之集成mybatis、Druid(七)

    一.环境: IDE:IntelliJ IDEA 2017.1.1 JDK:1.8.0_161 Maven:3.3.9 springboot:2.0.2.RELEASE 二.说明:      本文综合之 ...

  9. ORM进阶之Hibernate中对象的三大状态解析

    ORM进阶之 ORM简单介绍 ORM进阶之Hibernate简单介绍及框架搭 ORM进阶之Hibernate的三大对象 ORM进阶之Hibernate中对象的三大状态解析 在Hibernatea中每一 ...

  10. SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例

    SpringBoot 使用yml配置 mybatis+pagehelper+druid+freemarker实例 这是一个简单的SpringBoot整合实例 这里是项目的结构目录 首先是pom.xml ...

随机推荐

  1. EMC测试国家标准GB/T 17626

    转载: 详解EMC测试国家标准GB/T 17626 - whik - 博客园 (cnblogs.com)

  2. airtext初始化(一)

  3. Scrum Meeting 0429

    零.说明 日期:2021-4-29 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 qsy PM&前端 完成部分后端管理 ...

  4. Beta阶段第六次会议

    第六次会议 时间:2020.5.22 完成工作 姓名 任务 难度 完成度 xyq 1.编写技术博客 中 90% ltx 1.编写小程序2.添加全局变量之后页面无法加载的bug 中 90% lm(迟到) ...

  5. [软工作业]-软件案例分析-CSDN

    [软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...

  6. hystrix的dashboard和turbine监控

    当我们的应用程序使用了hystrix后,每个具体的hystrixCommand命令执行后都会产生一堆的监控数据,比如:成功数,失败数,超时数以及与之关联的线程池信息等.既然有了这些监控数据数据,那么我 ...

  7. stm32直流电机驱动与测速

    stm32直流电机驱动与测速 说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了 ...

  8. 攻防世界 杂项 11.simple_transfer

    题目描述: 文件里有flag,找到它. 题目分析: 文件解压后是一个抓包流量分析文件,用 wireshark 打开后,用分组字节流搜索 flag,追踪 TCP 流,可以隐约看到有 file.pdf, ...

  9. opencv学习(一)——图像入门

    图像入门 一.读取图像 在opencv中使用cv.imread(filename, flags)函数读取图像.filename参数表示读取图像的路径.读取图像的路径应完整给出,且不能含有中文,否则在调 ...

  10. NavigationView使用简介

    Android支持直接创建带有NavigationView的Activity,这里主要介绍NavigationView的逻辑. NavigationView通常是跟DrawerLayout一起使用.D ...