c3p0连接池配置_数据库连接池与DBUtils工具

4b8103717227f71f43244d314b0c8f72.png

一、数据库连接池(数据源)

1.数据库连接池是什么

数据库连接池是为了避免“反复创建和关闭连接数据库对象Connection”,提高程序效率而设计的一种负责“分配”、“管理”、“关闭”数据库连接对象的池技术。

工作逻辑是在数据库连接池初始化时,会建立指定个数据库连接对象。当外界申请使用数据库连接对象时,会先检查是否有空闲连接对象若有(&&连接池中使用的连接对象数目<最大活跃连接对象数目&&最小空闲连接对象数目>连接池中空闲连接对象数目)就返回给其使用,否则等待;若没有(连接时中所有连接对象数目<最大闲置连接对象数目&&连接池中使用的连接对象数目<最大活跃连接对象数目)则新建;否则等待。使用完后将连接对象回收到数据库连接池中,数据库连接池关闭时会释放所有连接对象资源。

数据库连接池中,最小连接闲置对象数目<=连接对象数目<=最大闲置连接对象数目

2.数据库连接池的相关实现接口与类

a62c3c65e813aeb21ca5cce17d94e7d3.png
DataSource接口(数据源接口)

6ebf19365a355142e69f914e679b903d.png
BasicDataSource(DBCP数据源实现类)

ad4cdcc95d9c65dc78d44426768a33ed.png
ComboPooledDataSource(C3P0数据源实现类)

3.数据库连接池的实现

>DBCP数据库连接池

共同前提:在WEB-INF文件夹下的lib文件夹下,放上mysql-connector-java-8.0.19.jar、commons-dbcp2-2.8.0.jar、commons-logging-1.2.jar、commons-pool2-2.9.0.jar包(若自己去网上下载,注意一下版本匹配问题)

(1)直接配置数据库连接池

package 

(2)配置文件配置数据库连接池

/*  a.properties配置文件 
    格式:属性=属性值*/
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC
username=root
password=123456
initialSize=5
maxTotal=5

/* 测试类*/
package Test;

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

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSourceFactory;

public class DBCPTest2 {
	public static DataSource ds = null;
	static{
		Properties property = new Properties();
		try{
			InputStream in = new DBCPTest2().getClass().getClassLoader().getResourceAsStream("a.properties");
			property.load(in);
			ds = BasicDataSourceFactory.createDataSource(property);
		}catch(Exception e){
			throw new ExceptionInInitializerError(e);
		}
	}
	
	public static void main(String[] args) throws SQLException {
		Connection con = ds.getConnection();
                // 自己定义对数据库的操作
	}
}

>C3P0数据库连接池

共同前提:在WEB-INF文件夹下的lib文件夹下,放上mysql-connector-java-8.0.19.jar、c3p0-0.9.2.1.jar、mchange-commons-java-0.2.3.4.jar(若自己去网上下载,注意一下版本匹配问题)

(1)直接配置数据库连接池

package Test;

import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Test{
	public static ComboPooledDataSource cpds = null;
	static{
	        cpds = new ComboPooledDataSource();
                // 配置数据库连接信息
		cpds.setDriverClass("com.mysql.cj.jdbc.Driver");
		cpds.setJdbcUrl("jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC");
		cpds.setUser("root");
		cpds.setPassword("123456");
                // 配置数据库连接池的相关属性
		bds.setInitialPoolSize(8);
		bds.setMaxPoolSize(10);
	}
	
	public static void main(String[] args) throws SQLException {
		Connection con = cpds.getConnection();
                // 自己定义对数据库的操作
	}
}

(2)配置文件配置数据库连接池

/* c3p0-config.xml 配置文件(注意名字必须是这个)
*/
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
         <!-- 默认数据库连接池配置 -->
	<default-config>
		<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC</property>
		<property name="user">root</property>
		<property name="password">123456</property>
		<property name="initialPoolSize">8</property>
		<property name="maxPoolSize">10</property>
	</default-config>
        <!-- 自定义数据库连接池配置,通过named-config标签的name属性来使用,具体见测试类 -->
	<named-config name="myCP03">
		<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?serverTimezone=UTC</property>
		<property name="user">root</property>
		<property name="password">123456</property>
		<property name="initialPoolSize">16</property>
		<property name="maxPoolSize">20</property>
	</named-config>
</c3p0-config>

/* 测试类*/
package Test;

import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Test2 {
	public static ComboPooledDataSource  cpds = null;
	static{
                // 如果不给参数,用的是默认配置
		cpds = new ComboPooledDataSource("myCP03");
	}
	public static void main(String[] args) throws SQLException {
		Connection con = cpds.getConnection();
                // 自己定义对数据库的操作
	}
}

二、DBUtils工具

1.相关类/接口的方法

bdc00b19e081ca43f6a50a374ad20139.png

2.使用前提

>导入mysql-connector-java-8.0.19.jar

>导入c3p0-0.9.2.1.jar、mchange-commons-java-0.2.3.4.jar

>导入commons-dbutils-1.7.jar


资源分享

1.mysql-connector-java-8.0.19.jar

链接:https://pan.baidu.com/s/1v8n5T-OlbSlAgBUls_zFdg

提取码:8z3w

2.DBCP数据库连接池相关jar包

链接:https://pan.baidu.com/s/1tdcsp61RIVPk60eK03NF8g

提取码:0u7u

3.C3P0数据库连接池相关jar包

链接:https://pan.baidu.com/s/1N-kw0acMpev93coiyhoSkQ

提取码:6m6u

4.commons-dbutils-1.7.jar

链接:https://pan.baidu.com/s/1ih-Ri2wmCbgo92jHsQLUIw

提取码:x6kv

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值