华企号 后端开发 数据库连接池

数据库连接池

  • 连接池的意义就是提前创建连接,避免需要使用时再申请连接造成的重复申请资源造成的浪费。
  • 连接池负责在需要的时候分发连接,使用者释放连接时需要放回到连接池中。

连接池可以自定义,当然常用的一般都是选择采用第三方开源的连接池,想了解如何自定义连接池的可以自查,下面给出的是两个常用的连接池的用法。

 

 

DBCP:

首先,使用DBCP连接池需要导入包:commons-dbcp.jar和commons-pool.jar【如果需要日志功能,还需要commons-logging-1.2.jar ,这里不讲述】

DBCP根据配置方式,下面给出两种使用方法:

1.手动配置法:

  1. 创建BasicDataSource对象: BasicDataSource dataSource = new BasicDataSource();
  2. 配置BasicDataSource对象:(少用)调用对应函数配置,例如dataSource.setDriverClassName(“com.mysql.jdbc.Driver”);
  3. 得到连接对象:Connection conn = ds.getConnection();
  4. 操作数据库。(得到数据库连接对象后,就可以像以前一样去操作数据库了)

image

2.配置文件配置法:

  1. 创建BasicDataSourceFactory对象:BasicDataSourceFactory factory = new BasicDataSourceFactory();
  2. 利用BasicDataSourceFactory对象的createDataSource函数读取配置文件配置DataSource对象:DataSource dataSource = factory.createDataSource(properties);【配置文件能用哪些参数可以参考这个文档:http://commons.apache.org/proper/commons-dbcp/configuration.html】
  3. 得到连接对象:Connection conn = ds.getConnection();
  4. 操作数据库。(得到数据库连接对象后,就可以像以前一样去操作数据库了)

image

 

当使用完毕后,像往常一样调用close关闭连接即可【这里通过连接池获取的Connection对象已经封装过了,使用close函数相当于放回连接池中】

 

常用的dbcp.properties的配置信息:

#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
username=root
password=

#<!– 初始化连接 –>
initialSize=10

#最大连接数量
maxActive=50

#<!– 最大空闲连接 –>
maxIdle=20

#<!– 最小空闲连接 –>
minIdle=5

#<!– 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 –>
maxWait=60000

#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:”user” 与 “password” 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=gbk

#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED

 

C3P0:

首先,使用C3P0连接池需要导入包:c3p0-0.9.1.2.jar【还有扩展包如c3p0-oracle-thin-extras-0.9.1.2.jar,这里不讲】

 

手动配置法:

  1. 创建ComboPooledDataSource对象:ComboPooledDataSource dataSource = new ComboPooledDataSource();
  2. 调用对应函数配置对应属性

image

 

配置文件配置法:

  1. 创建配置文件,c3p0的配置文件名字是固定的,必须是c3p0.properties或c3p0-config.xml,否则识别不了。配置文件的写法看下面【配置文件存储的位置:1.能在classpath中获取到的目录(比如工程的src目录)、2.WEB-INF/classes、3.某些类似功能的路径】
  2. 创建ComboPooledDataSource对象【如果有配置文件,那么会读取配置文件来配置ComboPooledDataSource对象】
  3. 获取连接
  4. 执行sql语句

image

 

当你使用完后,Connection对象调用close函数,就会把连接释放会连接池中【这里通过连接池获取的Connection对象已经封装过了,使用close函数相当于放回连接池中】

 

配置文件c3p0-config.xml的写法:

复制代码
复制代码
<c3p0-config>
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost/bank</property>
        <property name="user">root</property>
        <property name="password">123456</property>
        <!-- 下面的是额外的配置,如最大连接数,连接池大小。。 
        <property name="initialPoolSize">10</property> 
        <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> 
        <property name="minPoolSize">10</property> <property name="maxStatements">200</property> 
        -->

    </default-config>
    <!-- 上面是默认的,如果不给参数,默认是上面的; -->
    <!-- 下面的是单独的,在创建对象时把下面name中的那个值赋给对象的构造函数,那么将使用下面的配置 -->
    <named-config name="student">
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost/student</property>
        <property name="user">root</property>
        <property name="password">123456</property>
    </named-config>

</c3p0-config>
复制代码

配置文件c3p0.properties的写法:

复制代码
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost/bank
c3p0.user=root
c3p0.password=123456

 

想更详细的了解c3p0,可以参考官方文档:https://www.mchange.com/projects/c3p0/index.html#contents

怎样去配置c3p0连接池,什么英语代表什么意思,具体请参考:https://www.mchange.com/projects/c3p0/index.html#configuration_properties

 

补充:

  • 事实上DBCP和c3p0还有不少使用方法,上面只讲解了常用的。

作者: 华企网通王鹏程序员

我是程序员王鹏,热爱互联网软件开发和设计,专注于大数据、数据分析、数据库、php、java、python、scala、k8s、docker等知识总结。 我的座右铭:"业精于勤荒于嬉,行成于思毁于随"
上一篇
下一篇

发表回复

联系我们

联系我们

028-84868647

在线咨询: QQ交谈

邮箱: tech@68v8.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部