Java 数据库系列教程--DBCP连接池连接数据库

1、概念

DBCP(DataBase Connection Pool)数据库连接池,是java数据库连接池的一种,由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开。

2、代码示例

所需jar包:commons-dbcp2-2.2.1.jar、commons-pool2-2.4.2.jar、commons-logging-1.2.jar,另外还有数据库的jdbc驱动mysql-connector-java-5.1.40-bin.jar

连接池管理类
package com.wqc.test;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.util.Properties;
import java.util.logging.Logger;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;

public class DBManager {
	private static final String configFile = "dbcp.properties";

	private static DataSource dataSource;

	static {
		Properties dbProperties = new Properties();
		try {
			dbProperties.load(DBManager.class.getClassLoader().getResourceAsStream(configFile));
			dataSource = BasicDataSourceFactory.createDataSource(dbProperties);

			Connection conn = getConn();
			DatabaseMetaData mdm = conn.getMetaData();

			System.out.println("Connected to " + mdm.getDatabaseProductName() + " " + mdm.getDatabaseProductVersion());
			if (conn != null) {
				conn.close();
			}

		} catch (Exception e) {
			System.out.println("初始化连接池失败:" + e);
		}
	}

	private DBManager() {

	}

	public static final Connection getConn() {
		Connection conn = null;
		try {
			conn = dataSource.getConnection();
		} catch (Exception e) {
			System.out.println("获取数据库连接失败:" + e);
		}
		return conn;
	}

	//关闭数据库连接,将连接返还给数据库连接池
	public static void closeConn(Connection conn) {
		try {
			if (conn != null && !conn.isClosed()) {
				conn.setAutoCommit(true);
				conn.close();
			}
		} catch (Exception e) {
			System.out.println("关闭数据库连接失败:" + e);
		}
	}

	public static void main(String[] args) {
		long begin = System.currentTimeMillis();
		for (int i = 0; i < 10000; i++) {
			Connection conn = DBManager.getConn();
			System.out.println(i + "连接数:");
			DBManager.closeConn(conn);
		}
		long end = System.currentTimeMillis();
		System.out.println("用时:" + (end - begin));
	}
}
配置文件需要放在src文件夹下,内容如下:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
maxActive=30
maxIdle=10
maxWait=1000
removeAbandoned=true
removeAbandonedTimeout=180



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wqc19920906/article/details/72832780
上一篇Java 数据库系列教程--线程池与普通jdbc的 比较
下一篇面向对象设计原则之一--开闭原则
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭