C3P0连接池—拓展资料

本文介绍了如何通过硬编码方式实现C3P0和DRUID连接池,包括设置连接参数如driverClass、jdbcUrl、user、password,以及连接池参数如initialPoolSize、maxPoolSize等。案例展示了正常获取连接和超时情况,并指出了纯代码配置的弊端——修改配置需改动源代码。
摘要由CSDN通过智能技术生成

第1章 拓展资料

1.1 准备数据

CREATE TABLE student (
  id INT PRIMARY KEY AUTO_INCREMENT,
  NAME VARCHAR(20),
  age INT,
  score DOUBLE DEFAULT 0.0
);

1.2 硬编码方式实现C3P0连接池

1.2.1 案例需求

使用代码给C3P0连接池设置相应的参数。

1.2.2 案例步骤

  1. 导入jar包c3p0-0.9.1.2.jar
  2. 创建连接池对象ComboPooledDataSource对象
  3. 设置连接参数:driverClass,jdbcUrl,user,password
  4. 设置连接池参数
    • 初始连接数initialPoolSize
    • 最大连接数maxPoolSize
    • 最大等待时间checkoutTimeout
    • 最大空闲回收时间maxIdleTime
  5. 获取连接对象(getConnection()方法)

1.2.3 案例代码

public class Demo01 {

	public static void main(String[] args) throws Exception {
		// 2.创建连接池对象ComboPooledDataSource对象
		ComboPooledDataSource ds = new ComboPooledDataSource();
		
		// 连接到数据库的相关参数
		// 3.设置连接参数:driverClass , jdbcUrl, user, password
		ds.setDriverClass("com.mysql.jdbc.Driver"); // 设置驱动的名称
		ds.setJdbcUrl("jdbc:mysql://localhost:3306/day25");
		ds.setUser("root");
		ds.setPassword("root");
		
		// 4.设置连接池参数
		// a.初始连接数initialPoolSize
		ds.setInitialPoolSize(5);
		
		// b.最大连接数maxPoolSize
		ds.setMaxPoolSize(10);
		
		// c.最大等待时间checkoutTimeout
		// Java程序去连接池中取连接,最长的等待时间,超过这个时间会有异常
		ds.setCheckoutTimeout(5000);
		
		// d.最大空闲回收时间maxIdleTime
		// 连接池中的连接超过这个时间没有人使用,就会自动销毁
		ds.setMaxIdleTime(3000);
		
		Connection conn = ds.getConnection(); // 从一个连接池中取出一个连接
		String sql = "INSERT INTO student VALUES (NULL, ?, ?, ?);";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, "张三");
		pstmt.setInt(2, 25);
		pstmt.setDouble(3, 99.5);
		
		int i = pstmt.executeUpdate();
		System.out.println("INSERT 影响的行数:" + i);
		pstmt.close();
		conn.close(); // 将连接还回连接池中
	}
}

1.2.4 案例效果

  1. 正常获取连接
    在这里插入图片描述

  2. 获取连接超时
    在这里插入图片描述

  3. 使用连接池中连接执行SQL语句
    在这里插入图片描述

总结:使用纯代码获取配置C3P0连接池的弊端,所有配置信息都写在代码中。一旦需要改配置信息,就需要改动源代码,非常麻烦。

1.3 硬编码方式实现DRUID连接池

1.3.1 案例需求

使用代码给DRUID连接池设置相应的参数。

1.3.2 案例步骤

  1. 导入jar包druid-1.0.9.jar
  2. 创建连接池对象DruidDataSource对象
  3. 设置连接参数:driverClassName , url, username, password
  4. 设置连接池参数
    • 初始连接数initialSize
    • 最大连接数maxActive
    • 最大等待时间maxWait
    • 最小空闲连接minIdle
  5. 获取连接对象(getConnection()方法)

1.3.3 案例代码

public class Demo02 {
	public static void main(String[] args) throws Exception {
		DruidDataSource ds = new DruidDataSource();
		
		// 设置置连接参数
		ds.setDriverClassName("com.mysql.jdbc.Driver");
		ds.setUrl("jdbc:mysql://127.0.0.1:3306/day25");
		ds.setUsername("root");
		ds.setPassword("root");
		
		// 设置连接池参数
		ds.setInitialSize(5);
		ds.setMaxActive(10);
		ds.setMaxWait(3000);
		ds.setMinIdle(3);
		
		// 从连接池中取出连接
		Connection conn = ds.getConnection();
		
		// 执行SQL语句
		String sql = "INSERT INTO student VALUES (NULL, ?, ?, ?);";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, "王五");
		pstmt.setInt(2, 35);
		pstmt.setDouble(3, 88.5);
		
		int i = pstmt.executeUpdate();
		System.out.println("影响的行数: " + i);
		
		pstmt.close();
		conn.close(); // 将连接还回连接池中
	}
}

1.3.4 案例效果

  1. 正常获取连接
    在这里插入图片描述

  2. 获取连接超时
    在这里插入图片描述

  3. 使用连接池中连接执行SQL语句
    在这里插入图片描述

总结:使用纯代码获取配置DRUID连接池的弊端,所有配置信息都写在代码中。一旦需要改配置信息,就需要改动源代码,非常麻烦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值