jdbc常见的四种连接池的使用(C3P0、Druid、HikariCP 、DBCP)

2023-12-20 15:52:23

🍒1.C3P0连接池

c3p0下载地址:

https://sourceforge.net/projects/c3p0/

解压之后把下面两个jar包添加到库

在这里插入图片描述

定义c3p0.xml配置文件

<c3p0-config>
    <!--使用默认的配置读取数据库连接池对象 -->
    <default-config>
        <!--  连接参数 -->
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/ScienceDB</property>
        <property name="user">root</property>
        <property name="password">root</property>

        <!-- 连接池参数 -->
        <!--初始化申请的连接数量-->
        <property name="initialPoolSize">5</property>
        <!--最大的连接数量-->
        <property name="maxPoolSize">10</property>
        <!--超时时间-->
        <property name="checkoutTimeout">3000</property>
    </default-config>
</c3p0-config>

测试c3p0

代码如下:

//c3p0的数据源
        ComboPooledDataSource dataSource=new ComboPooledDataSource();
        //连接数据库参数
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/student");
        dataSource.setUser("root");
        dataSource.setPassword("root");
        //连接池的参数设置
        dataSource.setInitialPoolSize(5);//初始连接数
        dataSource.setMaxPoolSize(20);//最大连接数
        dataSource.setCheckoutTimeout(3000);//连接超时

        //从连接池中获取一个连接
        Connection conn=dataSource.getConnection();
        ResultSet re=conn.prepareStatement("select count(*) coun from EmployeeTab").executeQuery();
        if(re.next()){
            System.out.println(re.getInt("coun"));
        }
        conn.close();//释放连接---》将当前的工作连接,释放为空闲连接
    }

🥭2.Druid连接池

Druid下载地址

https://repo1.maven.org/maven2/com/alibaba/druid/

添加Druid配置文件:

#加载数据库驱动
driverClassName = com.mysql.cj.jdbc.Driver
#数据库连接地址
url = jdbc:mysql://localhost:3306/MovieDB
#数据库用户名
username = root
#数据库密码
password = 123456
#初始化连接数量
initialSize = 10
#最大连接数量
maxActive = 30
#最大超时数1000ms
maxWait = 1000

测试代码:

public class Test {
    public static void main(String[] args) throws Exception {
        //加载配置文件
        Properties properties=new Properties();
        properties.load(new FileInputStream("src\\jdbc.properties"));
        //在工厂中创建一个数据源,数据源的连接信息来源于properties配置文件中
        DataSource dataSource= DruidDataSourceFactory.createDataSource(properties);
        Connection connection=dataSource.getConnection();
        ResultSet rs=connection.prepareStatement("select count(*) from studenttab").executeQuery();
        if(rs.next()){
            System.out.println(rs.getInt(1));
        }
        connection.close();//释放连接----》将当前的工作连接,释放为空闲连接
    }
}

🍅3.HikariCP连接池

HikariCP Jar包下载地址
https://mvnrepository.com/artifact/com.zaxxer/HikariCP/4.0.3

在这里插入图片描述

使用光连接池需要配置slf4j日志组件1.7.25版本jar包
Maven Repository: org.slf4j ? slf4j-api ? 1.7.25 (mvnrepository.com)

slf4j-log4j12-1.5.11.jar 下载点击直接下载[(https://repo1.maven.org/maven2/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar])
在这里插入图片描述

配置文件:

#加载数据库驱动
driverClassName=com.mysql.cj.jdbc.Driver
#数据库连接地址
jdbcUrl=jdbc:mysql://localhost:3306/MovieDB
#数据库用户名
username=root
#数据库密码
password=123456
# 连接池名称
poolName=MyConnectionPool
# 连接池大小
maximumPoolSize=10
# 最小空闲连接数
minimumIdle=5
# 连接超时时间(毫秒)
connectionTimeout=30000
# 空闲连接超时时间(毫秒)
idleTimeout=600000
# 最大生存时间(毫秒)
maxLifetime=1800000

测试代码:

public class Demo{
	 public void static main(String [] args) throws IOException, SQLException {
        Properties properties=new Properties();
        properties.load(new FileInputStream("src//HikariCP.properties"));
        //HikariCP配置连接池
        HikariConfig hikariConfig=new HikariConfig(properties);
        HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
        Connection connection = hikariDataSource.getConnection();
        ResultSet resultSet = connection.prepareStatement("select count(* )from movie").executeQuery();
        if(resultSet.next()){
            int count=resultSet.getInt(1);
            System.out.println(count);
        }
        resultSet.close();
        connection.close();
  	  }
	}
}

🍓4.DBCP连接池

DBCP Jar包下载地址

需要下载两个jar包点击直接下载或者去官网
直接下载https://dlcdn.apache.org//commons/pool/binaries/commons-pool2-2.12.0-bin.zip
直接下载https://dlcdn.apache.org//commons/dbcp/binaries/commons-dbcp2-2.11.0-bin.zip
在这里插入图片描述
在这里插入图片描述

使用过程可能会遇到java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory错误

DBCP需要依赖这个工厂包装类包装日志所以我们还需要下载一个jar包

https://dlcdn.apache.org//commons/logging/binaries/commons-logging-1.3.0-bin.zip 直接下载

在这里插入图片描述
配置文件dbcp.properties

#加载数据库驱动
driverClassName=com.mysql.cj.jdbc.Driver
#数据库连接地址
url=jdbc:mysql://localhost:3306/MovieDB
#数据库用户名
username=root
#数据库密码
password=123456
#初始化连接数量
initialSize=10
#最大连接数
maxActive=30
#最大超时数3000ms
maxWait=3000

代码演示:

public class Demo{
	public static main(String [] args) throws SQLException, IOException {
            // 创建一个Properties对象
            Properties properties = new Properties();
            // 创建一个FileInputStream对象,用于读取src\\dbcp.properties文件
            FileInputStream fileInputStream = new FileInputStream("src\\dbcp.properties");
            // 使用FileInputStream对象读取文件,并将文件内容加载到properties对象中
            properties.load(fileInputStream);
            // 使用properties对象创建一个BasicDataSource对象
            BasicDataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
        Connection connection = dataSource.getConnection();
        ResultSet resultSet = connection.prepareStatement("select count(* )from movie").executeQuery();
        if(resultSet.next()){
            int count=resultSet.getInt(1);
            System.out.println(count);
        }
        resultSet.close();
        connection.close();
   		 }
	}
}

以上就是四种常见连接池的使用。

🍋最后🍋

总结不易,希望小宝们不要嫌弃哦!😀

文章来源:https://blog.csdn.net/2301_78753262/article/details/135068704
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。