使用DBCP连接池连接数据库
在使用dbcp连接池是需要下载相关的jar包进行配置
072001.png
使用DBCP常用方法说明:
方法 | 说明 |
---|---|
setUsername(String userName) | 设置建立连接数据库的用户名 |
setPassword(String password) | 设置建立连接数据库的密码 |
setUrl(String url) | 设置连接数据库的地址 |
setDriverClassName( String driverClassName) | 设置JDBC驱动类的名称 |
getConnection() | 获取连接数据库的连接,返回值Connection对象 |
setMaxIdle(int maxIdle) | 设置连接池最大空闲连接数 |
setMinIdel(int minIdel) | 设置连接池最小空闲连接数 |
使用dbcp 连接池进行数据库的连接 连接池对象BasicDataSource操作连接池的配置信息,BasicDataSource实现了DataSource接口;
public class DBPCConnectionPool {
/**
* 使用dbcp来进行连接池的连接和获取连接对象
*
* @throws SQLException
*/
@Test
public void connectionPoolByApacheCommoms() throws SQLException {
// 获取连接池对象 BasicDataSource
BasicDataSource dataSource = new BasicDataSource();
// 加载数据库驱动
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
// 设置数据库地址
dataSource.setUrl("jdbc:mysql://localhost:3306/testdb");
// 设置连接数据库用户
dataSource.setUsername("root");
// 设置连接数据库密码
dataSource.setPassword("12345678");
// 获取连接对象
Connection connection = dataSource.getConnection();
System.out.println(connection);
System.out.println(connection.getClass().getName());
// 将将连接对象归还连接池
connection.close();
}
}
代码中connection.close()方法不是关闭连接的操作,是将当前使用连接归还到连接池中;
使用c3p0连接池连接数据库
在使用c3p0连接池是需要下载相关的jar包进行配置
072002.png
使用c3p0连接池操作数据库中,使用到的连接连接池对象是ComboPooledDataSource,通过连接池对象可以对连接池的一些属性进行配置,数据库驱动,数据库地址,连接数据库的用户名,密码等,但是在使用c3p0连接池是,会有三种连接方式:
1.java代码进行连接池对象的设置
2.加载配置文件默认配置
3.加载配置文件中自定义的配置信息
使用此c3p0连接池连接数据库准备条件:
1.准备c3p0的jar包
2.创建c3p0-config.xml配置文件(使用配置文件时创建,创建的配置文件名称必须为"c3p0-config.xml",且文件路径必须在项目src根目录下
)
1.连接池配置信息-java代码配置
/**
* 连接池配置信息-java代码配置
*
* @throws PropertyVetoException
* @throws SQLException
*/
@Test
public void connectPoolByC3P0CodeSettings() throws PropertyVetoException, SQLException {
// 初始化连接池对象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 设置数据库驱动
dataSource.setDriverClass("com.mysql.jdbc.Driver");
// 设置数据库地址
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
// 设置数据库登录名
dataSource.setUser("root");
// 设置数据库登录密码
dataSource.setPassword("12345678");
// 连接池最大容量
dataSource.setMaxPoolSize(20);
// 初始化连接池容量
dataSource.setInitialPoolSize(10);
// 设置连接池容量满之后创建连接对象的增量
dataSource.setAcquireIncrement(5);
// 获取连接对象
Connection connection = dataSource.getConnection();
System.out.println(connection);
// 将连接对象归还连接池
connection.close();
}
2.加载配置文件默认配置
在src根目录下创建文件c3p0-config.xml,文件内容为:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/testdb</property>
<property name="user">root</property>
<property name="password">12345678</property>
</default-config>
<!-- This app is massive! -->
<named-config name="coustom-config">
<property name="acquireIncrement">50</property>
<property name="initialPoolSize">100</property>
<property name="minPoolSize">50</property>
<property name="maxPoolSize">1000</property>
<!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
配置文件创建成功则撸一波代码,来加载默认配置信息获取连接池对象。
/**
* 使用c3p0默认的配置文件进行连接池对象的创建
*
* 在创建c3p0连接池对象时,会自动扫描项目src根目录下是否存在c3p0-config.xml配置文件,存在则加载配置文件中 默认的配置信息
*
* @throws SQLException
*/
@Test
public void connectionPoolByC3P0DefaultConfig() throws SQLException {
// 初始化连接池对象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 获取连接对象
Connection connection = dataSource.getConnection();
System.out.println(connection);
// 将连接对象归还连接池
connection.close();
}
3.加载配置文件中自定义的配置信息
在加载配置文件时,我们代码中会使用ComboPooledDataSource类有参的构造方法:
/**
* 使用c3p0自定义的配置文件进行连接池对象的创建
* 在创建c3p0连接池对象时,会自动扫描项目src根目录下是否存在c3p0-config.xml配置文件,存在则加载配置文件中,则在初始化
* 连接池对象通过连接池对象构造方法传参来进行培配置信息的加载
*
* @throws SQLException
*/
@Test
public void connectionPoolByC3P0CoustomConfig() throws SQLException {
// 初始化连接池对象
ComboPooledDataSource dataSource = new ComboPooledDataSource("coustom-config");
// 获取连接对象
Connection connection = dataSource.getConnection();
System.out.println(connection);
// 将连接对象归还连接池
connection.close();
}
网友评论