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. JavaScript表单输入合法控制

    写在前面 为了提高数据输入的容错性和数据库数据的安全性,除了后端对输入的数据的逻辑判断处理,还可以前端页面高效率处理,从而提高系统的可靠性,下面是这次项目中的自己写的一些符合当时需要的控制. 账号位数 ...

  2. Python - faker

    安装 faker pip install Faker pip install Dumper 设置生成器 from faker import Faker fake = Faker() 它可以通过访问以想 ...

  3. 【UE4 C++】 启动 / 关闭外部exe、开启虚拟键盘

    启动/关闭外部exe 引擎自带 FPlatformProcess::CreateProc() FPlatformProcess::TerminateProc() windows api ShellEx ...

  4. kivy画板

    from kivy.app import App from kivy.graphics import Line, Color # 引入绘图线条,颜色 from kivy.uix.widget impo ...

  5. [技术博客]在团队中使用Pull Request来管理代码

    在团队中使用Pull Request来管理代码 前言 在参加多人共同开发项目,且选用Git作为代码托管工具的时候,我们不免会遇到分支冲突.覆盖.合并等问题.显然,因为同一个仓库是属于大家的,所以每个人 ...

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

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

  7. 2020年OO助教工作总结

    随着这学期课程的落幕,我一学期的OO助教工作也宣告结束.这学期我的工作主要在系统组,和OO后台的数据库打交道. 作业查重 我几乎每周都会做的例行工作,是对每周的homework进行查重管理.由于使用了 ...

  8. kafka-eagle监控界面搭建

    kafka-eagle监控界面搭建 一.背景 二 .mac上安装kafka-eagle 1.安装JDK 2.安装eagle 1.下载eagle 2.解压并配置环境变量 3.启用kafka的JMX 4. ...

  9. spring security实现简单的url权限拦截

    在一个系统中,权限的拦截是很常见的事情,通常情况下我们都是基于url进行拦截.那么在spring security中应该怎么配置呢. 大致步骤如下: 1.用户登录成功后我们需要拿到用户所拥有的权限,并 ...

  10. Noip模拟32(再度翻车) 2021.8.7

    T1 Smooth 很水的一道题...可是最傻    的是考场上居然没有想到用优先队列优化... 上来开题看到这个,最一开始想,这题能用模拟短除法,再一想太慢了,就想着优化 偏偏想到线性筛然后试别的素 ...