数据库连接--执行完毕--释放
连接--释放 十分浪费系统资源
池化技术:准备一些预先的资源,过来就连接预先准备好的
编写连接池,实现一个接口,DataSource
开源数据源实现(拿来即用)
DBCP
C3P0
Druid:阿里巴巴
使用了这些数据库连接池之后,我们在项目开发中就不用编写连接数据库的代码了
DBCP
需要用到的jar包
commons-dbcp-1.4、commons-pool-1.6
package com.shushu.lesson05.utils;
?
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
?
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
?
public class JDBCUtils {
private static DataSource dataSource = null;
?
static{
?
try {
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
Properties properties = new Properties();
properties.load(in);
//创建数据源,工厂模式
dataSource = BasicDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
?
//获取连接
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();//从数据源中获取连接
}
//释放连接资源
public static void release(Connection conn, Statement st, ResultSet rs) throws SQLException {
if (rs!=null)
rs.close();
if (st!=null)
st.close();
if (conn!=null)
conn.close();
}
}
C3P0
需要用到的jar包
c3p0-0.9.5.5、mchange-commons-java-0.2.19
结论
无论使用什么数据源,本质还是一样的,DataSource接口不会变,方法不会变