JDBC三大连接池DBCP|C3P0|Druid和DBUtils工具使用

本文介绍了Java中常用的三大数据库连接池DBCP、C3P0和Druid的特点与配置,并展示了如何结合DBUtils进行数据库的增删改查操作。DBCP是Tomcat默认的连接池,C3P0具备自动回收空闲连接功能,而Druid以其高性能和丰富的社区支持受到青睐。DBUtils作为一个实用工具库,简化了JDBC的使用,提供了如ResultSetHandler等接口方便数据处理。
摘要由CSDN通过智能技术生成

1、DBCP(DataBase Connection Pool)

是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

添加配置文件
文件名称: dbcp.properties
文件位置: src下

#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/school
username=root
password=root
#<!-- 初始化连接 -->
initialSize=10
#最大连接数量
maxTotal=50
#<!-- 最大空闲连接 -->
maxIdle=20
#<!-- 最小空闲连接 -->
minIdle=5
#<!-- 超时等待时间以毫秒为单位 5000毫秒/1000等于60秒 -->
maxWaitMillis=5000

代码示例:

package jdbcdao.test;

import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class DBCP {
   
    //创建连接池对象
    private static BasicDataSource dataSource;
    //初始化连接池
    static {
   
        Properties prop = new Properties();
        InputStream is = DBCP.class.getClassLoader().getResourceAsStream("dbcp.properties");
        try {
   
            //加载文件
            prop.load(is);
            dataSource = BasicDataSourceFactory.createDataSource(prop);
        } catch (IOException e) {
   
            e.printStackTrace();
        } catch (Exception e) {
   
            e.printStackTrace();
            System.out.println("初始化连接池失败");
        }
    }
    //创建连接
    public static Connection getconnection(){
   
        try {
   
            return dataSource.getConnection();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }
        return null;
    }
}

测试类:

package jdbcdao.test;

import org.junit.Test;

import java.sql.Connection;
import java.sql.SQLException;

public class DBCPTest {
   
    @Test
    public void testConnection(){
   
        for (int i = 0; i <50 ; i++) {
   
            Connection conn = DBCP.getconnection();
            System.out.println(i+"->"+conn);
            try {
   
                conn.close();//把连接放入连接池
            } catch (SQLException throwables) {
   
                throwables.printStackTrace();
            }
        }
    }
}

2、C3P0连接池

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

c3p0与dbcp区别
1.
dbcp没有自动回收空闲连接的功能
c3p0有自动回收空闲连接功能
2.
dbcp需要手动加载配置文件
c3p0自动加载

添加配置文件
c3p0是在外部添加配置文件,工具直接进行应用,因为直接引用,所以要求固定的命名和文件位置
文件位置: src
文件命名:c3p0-config.xml/c3p0.properties

c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/school
c3p0.user=root
c3p0.password=root
#每次增长的个数
c3p0.acquireIncrement=5
#初始化大小
c3p0.initialPoolSize=20
#最小
c3p0.minPoolSize=10
#最大
c3p0.maxPoolSize=40
#超时时间
c3p0.checkoutTimeout=5000

注意:
1: c3p0的配置文件内部可以包含命名配置文件和默认配置文件!默认是选择默认配置!如果需要切换命名配置可以在创建c3p0连接池的时候填入命名即可!

2:如果xml配置文件和属性文件都存在时,xml优先级高于属性文件

代码示例:

package jdbcdao.test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.sql.Connection;
import java.sql.SQLException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值