日常开发中,我们时常会用到数据库连接池进行管理数据库连接。
数据库连接池的配置主要有两大块配置构成:
- 数据库连接池的配置,控制连接池的行为,例如最大最小连接数,获取链接的超时时间等
- 数据库连接的配置,控制每条数据库连接的行为,例如soTimeout读取数据等待时间
一. 数据库连接池配置
具体配置可以在连接池的官网进行查询:
二. 数据库连接配置
设置数据库连接属性,主要是设置java.sql.datasource的属性,主要有以下的方式:
- 如果是直接通过数据库驱动生成datasource的,jdbc规范的api便可以传入.java.sql.Driver.getConnection(url, properties)
- 如果jdbcurl支持的话可以通过jdbcurl进行设置
- 通过数据库连接池预留的api设置datasource的属性
2.1 通过数据库连接池设置数据库连接属性
- c3p0
ComboPooledDataSource.setProperties(Properties properties)
- hikaricp
2.2 通过jdbc规范api进行设置
1
2
Connection conn = java.sql.DriverManager.getConnection(String url, java.util.Properties info);
Connection conn = java.sql.Driver.connect(String url, java.util.Properties info) throws SQLException;
2.3 通过数据库url设置
JDBC Driver | connTimeout | socketTimeout | url格式 | 示例 |
---|---|---|---|---|
mysql | connectTimeout(默认值:0,单位:ms) | socketTimeout(默认值:0,单位:ms) | jdbc:mysql://[host:port],[host:port]…/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]… | jdbc:mysql://xxx.xx.xxx.xxx:3306/database?connectTimeout=60000&socketTimeout=60000 |
oracle | oracle.net.CONNECT_TIMEOUT (默认值:0,单位:ms) | oracle.jdbc.ReadTimeout(默认值:0,单位:ms) | 不支持通过url配置,只能通过OracleDatasource.setConnectionProperties() API设置, 使用DBCP时可以调用BasicDatasource.setConnectionProperties() 或BasicDatasource.addConnectionProperties()进行设置 |
参考: