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

来源:互联网 发布:淘宝卖小饰品 编辑:程序博客网 时间:2024/05/01 23:55

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.Driverurl=jdbc:mysql://localhost:3306/testusername=rootpassword=123456maxActive=30maxIdle=10maxWait=1000removeAbandoned=trueremoveAbandonedTimeout=180