码迷,mamicode.com
首页 > 数据库 > 详细

连接池DBCP的简单使用

时间:2015-04-12 06:56:43      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:dbcp 连接池使用

DBUtil工具类的设计

  1. 私有化构造方法,防止被new(很重要)

  2. 暴露一些public的方法给外界调用(很重要)

    有这么两步之后,工具类基本就完成了

·为什么要使用连接池?

在应用中,与数据建立连接,操作数据库,关闭连接。这是一件很耗费资源的。为了合理的使用资源,诞生了连接池这个东西

1.什么是连接池

连接池,顾名思义 存放连接的池子。其作用就是连接池与数据库建立长久的连接,当我们需要操作数据库的时候,不再是去主动建立连接,而是去连接池中获取链接,操作完成后,释放当前连接,资源回到连接池中,资源再利用!如此的效率提升了,但是问题来了

2.连接池中可以存放多少连接?当前连接被使用完毕后该怎么办?

连接池中的连接在第一次和数据库连接的时候已经申请了一些数量的连接。当前连接超过最大连接数时,连接池可以再一次向数据申请连接,此操作在配置文件中配置即可

连接池配置文件
dhcp.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/shopping
username=
password=

#<!-- 初始化连接 -->
dataSource.initialSize=10

#<!-- 最大空闲连接 -->
dataSource.maxIdle=20

#<!-- 最小空闲连接 -->
dataSource.minIdle=5

#最大连接数量
dataSource.maxActive=50

#是否在自动回收超时连接的时候打印连接的超时错误
dataSource.logAbandoned=true

#是否自动回收超时连接
dataSource.removeAbandoned=true

#超时时间(以秒数为单位)
dataSource.removeAbandonedTimeout=180

#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
dataSource.maxWait=1000

工具类代码
DBUtil.java
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import com.store.shopping.exception.DBException;
public class DBUtil {
private static DataSource dataSource;

//私有化构造方法
private DBUtil() {
}
static {
/**
JDBC操作数据库:
口诀(思路): 贾琏欲执事.
步骤:
    1.加载注册驱动.
    2.获取连接对象:Connection.
    3.获取语句对象.
    4.执行SQL语句.
    5.释放资源.
*/
// 读取资源文件
try {
Properties properties = new Properties();
InputStream inputStream = Thread.currentThread()
.getContextClassLoader().getResourceAsStream("dhcp.properties");
properties.load(inputStream);//加载资源
//使用工厂生产datasource
dataSource = BasicDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
throw new DBException("文件没找到:dhcp.properties");
}
}
        //暴露给外界调用的方法
public static DataSource getDataSource () {
return dataSource ;
}

测试代码

@Test
public void testConnection() throws Exception {
System.out.println(DBUtil.getDataSource().getConnection());
}

测试结果

jdbc:mysql://localhost:3306/shopping, UserName=sa@localhost, MySQL Connector Java


本文出自 “我的JAVA之路” 博客,请务必保留此出处http://heartofthesea.blog.51cto.com/7651104/1631344

连接池DBCP的简单使用

标签:dbcp 连接池使用

原文地址:http://heartofthesea.blog.51cto.com/7651104/1631344

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!