连接池的概念
为应用程序创建固定数量的连接对象,保存在池中进行复用。每次访问时从池中获取已存在,使用完之后,返回池中。
连接池采用了预先建立多个数据库连接对象,然后放到连接池里面去,当客户端请求得时候,取出来一个连接对象为客户端服务,当请求完成可以用.close()将连接对象放回到连接池中去。普通端的到的是物理连接,而在连接池中客户端的得到的是连接对象,一直存在的,大大减少了我们的时间。
例如
引包:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;
public class DBUtil {
private final static String DB_USERNAME = “root”;
private final static String DB_PASSWD = “root”;
private final static String DB_DRIVER = “com.mysql.jdbc.Driver”;
private final static String DB_URL = “jdbc:mysql://localhost:3306/test”;
private static DruidDataSource dds = null;
static {
dds = new DruidDataSource();
dds.setUsername(DB_USERNAME);
dds.setPassword(DB_PASSWD);
dds.setUrl(DB_URL);
dds.setDriverClassName(DB_DRIVER);
// dds.setInitialSize(5);//表示当连接池初始化后,在池中最少的链接数
// dds.setMaxActive(20);//表示池中最大连接数
}
public static Connection getDBConn() {
try {
return dds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static DataSource getDS() {
return dds;
}
public static void close(Connection conn) {
try {
if(conn != null) {
conn.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
}
public static void close(Statement stat) {
try {
if(stat != null) {
stat.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
}
public static void close(ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
}
public static void close(Connection conn, Statement stat, ResultSet rs) {
close(rs);
close(stat);
close(conn);
}
public static void close(Connection conn, Statement stat) {
close(stat);
close(conn);
}