数据库方言和数据库连接池是什么

Posted MasterYe随记本

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库方言和数据库连接池是什么相关的知识,希望对你有一定的参考价值。

1、数据库方言         

先说数据库方言,虽然说不同的数据库都声称支持标准的SQL语句,但是每个数据库多多少少对SQL语言进行了扩展。比如说:

SELECT xx FROM xxx LIMIT 1

mysql数据库和Oracle支持limit语句,然而一些其它的数据库并不支持,并且标准的SQL语句也不支持它,标准的方法如下:

SET ROWCOUNT 1

SELECT xx FROM xxx


这些扩展的SQL语句也就被称之为数据库方言。

为了支持数据库方言的使用,我们在设置ORM工具时需要指定数据库方言,比如hibernate的配置中就对数据库方言进行了说明:

当然hibernate支持的方言很多,部分例子如下图:

数据库方言和数据库连接池是什么

有人会问,在hibernate中可不可以不设置dialect,目前看来是必须要设置,否则会报错No DatabaseDialectMapper known for database。


2、数据库连接池        

数据库连接池是一个管理数据库连接的资源池,它能预先创建好一定数量的数据库连接数。它能够对数据库连接进行申请、使用和释放操作,就像是线程池一样。

数据库连接池最大作用就是预先创建好数据库连接。那么,是不是一定需要它呢?答案是否定的,可以在每次需要操作数据库时进行连接,但是这么做的最大缺点就是慢,因为每次建立连接都需要很大的耗时,夸张的说会有0.5-1s的延时。这时候数据库连接池就非常有用了,因为每次它能给你一个准备好的连接供使用,不需要耗费时间进行连接。

常见的数据库连接池包括druid、c3p0、dbcp等。以druid为例,它的配置项如下:

如何使用数据库连接池呢,上述配置被spring加载后就会创建一个名为dataSource的对象,以某个删除数据库的方法为例,只需要getConnection即可获取到连接:


以上是关于数据库方言和数据库连接池是什么的主要内容,如果未能解决你的问题,请参考以下文章

数据库连接池是啥

连接池是什么鬼东西

java中数据源和连接池是啥?现在还用得上么?

数据库连接池是如何管理 Connection 的?

Hibernate不同数据库的连接及SQL方言

Hibernate 连接不同数据库的方言