Java中使用c3p0建立MySQL数据库连接池

=Start=

缘由:

在学习Java的过程中不断用文章进行整理总结(常用功能的Java实现),争取早日能较为熟练的使用Java进行开发。

本来用c3p0建立数据库连接池这部分内容只想用一篇文章的一部分来进行代码样例说明的,但是没想到在网上搜到的一些介绍性文章或多或少都有些问题,对于我这样的初学者太不友好,一些本来很简单的问题就因为他们文章中的一句话让我走了不少弯路,所以感觉有必要单独记录一下这个过程,方便自己参考、查阅。

正文:

参考解答:
1、c3p0的基本概念

c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。

2、c3p0的几种配置方式

c3p0的配置方式分为三种,分别是:

  1. 使用c3p0-config.xml文件(文件名称固定);
  2. 使用c3p0.properties文件(文件名称固定);
  3. 用setters一个个地设置各个配置项。

特别说明:对于用IDEA建立的Maven项目来说,上面的c3p0-config.xml和c3p0.properties文件,要放在项目的「resources」目录下,而不是一些文章里说的「src」目录下,否则会出现:

java.sql.SQLException: Connections could not be acquired from the underlying database!

Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.

的错误。

3、不同方式的配置样例

①c3p0-config.xml文件的配置方式

对应的Java测试代码为:

②c3p0.properties文件的配置方式

注意:采用c3p0.properties文件进行配置的,都要加上前缀「c3p0.」,否则也会出现连不上的错误!

测试代码和上面的相同。

③用setter一个个的设置相关配置项

这个可以通过配置文件存放数据库用户名、密码、连接等信息,也可以直接写在代码中:

&

下面用到的配置文件也要放在项目的「resources」目录下!

4、和不使用连接池的情况做对比

MySQL在高版本需要指明是否进行SSL连接,未配置useSSL时警告信息正好可以用来显示一次连接。从实际运行日志中可以看出,当使用连接时,程序在启动时直接建立了20个数据库连接(如果不显式指定的话,默认是3个),接下来的数据库操作通过连接池中的连接操作数据库,不再新建连接。而不使用连接池时,每一次数据库操作都建立了一次数据库连接。

从上面的测试也可以看出——使用连接池的操作耗时明显短于每次新建连接的操作,所以,对于存在多个连接的情况下,使用连接池可以带来极大的效率提升。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3980.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注