数据库对于每一个Connection对象的创建和关闭,都需要耗费资源,如果Connection连接过多,会造成很多的性能损失,因此,可以通过数据库连接池的方法,程序启动的时候初始化创建一组Connection连接(连接池),在Connection的关闭操作中并不是关闭连接,而是将连接放回池中。
常用的连接池有:
-
C3P0 :最早的连接池,已经不更新了。
-
DBCP :Tomcat内置的连接池,另需要依赖Pool组件
-
Druid :alibaba的开源组件。
-
HikariCP :性能最好
下面以Druid来讲解:
池参数:
initialsize | 初始连接数,默认0 |
minIdle | 最小空闲连接数,少于此会创建 |
maxIdle | 最大空闲连接数,多余的会销毁,默认0 |
maxActive | 最大活跃连接数,默认8 |
maxWaite | 超时时间,毫米单位,默认-1L |
实例操作:
-
java中引入druid包:druid-1.1.22.jar
- 在src目录下新建:druid.properties配置文件
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=a123456
initialsize=10
minIdle=5
#maxIdle=20 对于druid此配置已经过时
maxActive=10
maxWaite=1000
3.程序内代码
//配置文件读取
Properties p = new Properties();
p.load(A.class.getClassLoader().getResourceAsStream("druid.properties"));
//工厂类创建ds池对象
DataSource ds = DruidDataSourceFactory.createDataSource(p);
//从池中获取连接
Connection conn = ds.getConnection();
System.out.println(conn);
//将连接放回池
conn.close();