4天贯通JDBC技术八、数据库连接池
C3P0数据库连接池
// 保证在所有的通过C3P0获取的连接中,只有一个DataSource的对象。(推荐)
private static DataSource source = null;
static {
source = new ComboPooledDataSource("helloc3p0");
}
// 获取数据库的连接方式3:使用c3p0数据库连接池获取数据库的连接,使用配置文件
public static Connection getConnection3() throws Exception {
return source.getConnection();
}
对应的配置文件:c3p0-config.xml
<c3p0-config>
<named-config name="helloc3p0">
<!-- 提供数据库连接的4个基本信息 -->
<property name="jdbcUrl">jdbc:mysql:///test</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 当连接池中的数量不足时,c3p0连接一次性向数据库服务器申请的连接数 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池时,池中存在的连接数 -->
<property name="initialPoolSize">10</property>
<!-- 数据库连接池中最少容纳的连接数 -->
<property name="minPoolSize">5</property>
<!-- 数据库连接池中最大容纳的连接数 -->
<property name="maxPoolSize">100</property>
<!-- 连接池中,最多允许存在的Statement的数量 -->
<property name="maxStatements">10</property>
<!-- 一次连接中,最多容纳的Statement的个数 -->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
DBCP数据库连接池
//随着类的加载,使用BasicDataSourceFactory的静态方法createDataSource()返回一个
//DataSource的对象
private static DataSource source1 = null;
static {
Properties info = new Properties();
// info.load(new FileInputStream("dbcp.properties"));
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream(
"com/atguigu/java/dbcp.properties");
try {
info.load(is);
source1 = BasicDataSourceFactory.createDataSource(info);
} catch (Exception e) {
e.printStackTrace();
}
}
// 获取数据库的连接方式4:使用DBCP数据库连接池获取数据库的连接(推荐)
public static Connection getConnection5() throws Exception {
return source1.getConnection();
}
配置文件dbcp.properties:
username=root
password=123456
url=jdbc:mysql://127.0.0.1:3306/test
driverClassName=com.mysql.jdbc.Driver
initialSize=10
maxActive=100