数据库连接池
1.什么是数据库连接池?
DBCP(DataBase Connection Pool)
数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放
2.数据库连接池的作用
1.资源复用,避免了重复创建,释放连接的大量资源消耗
2.更快的响应,数据库连接池初始化的时候往往已经创建了若干数据库连接置于池中,当进行业务请求时,避免了重新创建数据库连接和释放的时间
3.统一的数据库连接管理,避免资源泄露
3.常用的数据库连接池
1、C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate 一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
2.DBCP(DataBase Connection Pool)数据库连接池,
是Java数据库连接池的一种,由Apache开发,通过数据库连接池,
可以让程序自动管理数据库连接的释放和断开
3. DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池。
4.Druid
1.首先引入jar包
2.引入配置文件
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
public class Demo5 {
public static void main(String[] args) throws Exception {
Properties properties=new Properties();
properties.load(new FileReader("src\\druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
Connection connection = dataSource.getConnection();
String sql="select * from user";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String username = resultSet.getString("username");
String password1 = resultSet.getString("password");
System.out.println(id+"\t"+username+"\t"+password1);
}
resultSet.close();
preparedStatement.close();
connection.close();
}
}
#\u57FA\u672C\u914D\u7F6E
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:/
username=root
password=123
#\u9ED8\u8BA4\u914D\u7F6E
filters=stat
initialSize=2
maxActive=300
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200