前言
数据库连接很昂贵。获取一个与数据库的连接,整个系统在背后要做很多消耗资源的事情,大多数时候,创建连接的时间比执行sql语句的时间还要长。故Java使用连接池机制替代了直接建立连接的方式。
常见的连接池
Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池!
注:
- 驱动是由数据库厂商提供,是对Java的JDBC接口的实现
- 连接池不是数据库厂商提供的,如DBCP是Apache提供的,C3P0连接池则是开源项目,要求各个厂商必须实现Java提供的BasicDataSource接口来对接各类连接池。
连接池实现 注册驱动 和 获取连接 两部分功能。
DBCP连接池
- 添加jar包 :commons-dbcp-1.4.jar和commons-pool-1.5.6.jar
Apache官网的下载地址 - 添加属性配置文件dbcpconfig.properties(这个文件的名字可以随意修改)
方式一: dbcpconfig.properties在当前工程的根目录使用
Properties ps = new Properties();
ps.load(new FileInputStream("dbcpconfig.properties"));
方式二:dbcpconfig.properties在src目录下时使用
// 类加载器
ps.load(DBCPUtils02.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"));
- 编写工具类
- DBCPUtils.java
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBCPUtils {
// 工具类的作用:获取一个数据库连接
private static DataSource ds = null;
//静态代码块,设置ds的四大要素
static{
Properties ps = new Properties();
try {
// dbcpconfig.properties在当前工程的根目录使用
// ps.load(new FileInputStream("dbcpconfig.properties"));
// dbcpconfig.properties在src目录下时使用 类加载器
ps.load(DBCPUtils02.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"));
} catch (FileNotFoundException e) {
e.printStackT