数据库连接池
标准接口: javax.sql.DataSource
-
获取连接: getConnection()
-
归还连接: Connection.close()
注: 如果连接对象Connection是从连接池中获取的, 那么调用Connection.close()不会再关闭连接, 而是把连接归还给连接池.
两种数据库连接池的实现
c3p0
使用步骤:
-
导入jar包: c3p0.jar和mchange-commons-java.jar(c3p0的依赖)
-
定义配置文件
<c3p0-config>
<default-config>
<!--连接参数-->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://192.168.31.169:3306/study</property>
<property name="user">root</property>
<property name="password">1234</property>
<!--连接池参数-->
<!--初始化申请的连接数量-->
<property name="initialPoolSize">5</property>
<!--最大连接数量-->
<property name="maxPoolSize">10</property>
<!--超时时间-->
<property name="checkoutTimeout">3000</property>
</default-config>
</c3p0-config>
-
文件名称: c3p0.properties 或者 c3p0-config.xml
-
路径: 放在classpath(project的src目录)下
-
创建核心对象: 数据库连接池对象ComboPooledDataSource
-
获取连接: getConnection()
例
package DataSourceDemo;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
/**
* c3p0的演示
*/
public class C3P0Demo {
public static void main(String[] args) throws SQLException {
//创建数据库连接对象
DataSource ds = new ComboPooledDataSource();
//获取连接对象
Connection conn = ds.getConnection();
//...
}
}
druid
使用步骤:
- 导入jar包: druid.jar
- 定义配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.31.169:3306/study
username=root
password=root
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
- properties形式
- 文件名任意, 可放在任意目录下
- 加载配置文件Properties
- 获取数据库连接池对象: 通过工厂类DruidDataSourceFactory来获取
- 获取连接: getConnection()
例
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
/**
* Druid演示
*/
public class DruidDemo {
public static void main(String[] args) throws Exception {
//加载配置文件
Properties pro = new Properties();
InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//获取连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
//获取连接
Connection conn = ds.getConnection();
//...
}
}