数据库连接池C3P0
一、数据库连接池
1.连接池原理
连接池目的:解决建立数据库连接耗费资源和浪费时间的问题,提高程序性能。
2.编写标准的数据源
3.常用的数据源配置
1.DBCP
DBCP:Apache推出的Database Connection Pool
使用步骤:
- 添加jar包 commons-dbcp-1.4.jar commons-pool-1.5.6.jar
- 添加属性资源文件
- 编写数据源工具类
C3P0
使用步骤:
- 添加jar包
- 编写配置文件,c3p0-config.xml,放在classpath中,或classes目录中
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///bookstore</property>
<property name="user">root</property>
<property name="password">1234</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
</default-config>
</c3p0-config>
- 编写工具类
package com.book.util;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3P0Util {
//得到一个数据源
private static DataSource dataSource = new ComboPooledDataSource();
public static DataSource getDataSource(){
return dataSource;
}
//从数据源中得到一个数据连接
public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException("服务器错误");
}
}
public static void release(Connection conn,Statement stmt,ResultSet rs){
//关闭资源
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if(stmt!=null){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
stmt = null;
}
if(conn!=null){
try {
conn.close();//关闭
} catch (Exception e) {
e.printStackTrace();
}
conn = null;
}
}
}