AI智能
改变未来

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


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

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

JdbcTemplate

Mybatis

ORM

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还是乖乖自己导吧。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » JdbcTemplate 、Mybatis、ORM 、Druid 、HikariCP 、Hibernate是什么?它们有什么关系?