使用DBCP連接池連接數(shù)據(jù)庫
在使用dbcp連接池是需要下載相關(guān)的jar包進(jìn)行配置
使用DBCP常用方法說明:
方法 | 說明 |
---|---|
setUsername(String userName) | 設(shè)置建立連接數(shù)據(jù)庫的用戶名 |
setPassword(String password) | 設(shè)置建立連接數(shù)據(jù)庫的密碼 |
setUrl(String url) | 設(shè)置連接數(shù)據(jù)庫的地址 |
setDriverClassName( String driverClassName) | 設(shè)置JDBC驅(qū)動類的名稱 |
getConnection() | 獲取連接數(shù)據(jù)庫的連接,返回值Connection對象 |
setMaxIdle(int maxIdle) | 設(shè)置連接池最大空閑連接數(shù) |
setMinIdel(int minIdel) | 設(shè)置連接池最小空閑連接數(shù) |
使用dbcp 連接池進(jìn)行數(shù)據(jù)庫的連接 連接池對象BasicDataSource操作連接池的配置信息,BasicDataSource實現(xiàn)了DataSource接口殴蹄;
public class DBPCConnectionPool {
/**
* 使用dbcp來進(jìn)行連接池的連接和獲取連接對象
*
* @throws SQLException
*/
@Test
public void connectionPoolByApacheCommoms() throws SQLException {
// 獲取連接池對象 BasicDataSource
BasicDataSource dataSource = new BasicDataSource();
// 加載數(shù)據(jù)庫驅(qū)動
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
// 設(shè)置數(shù)據(jù)庫地址
dataSource.setUrl("jdbc:mysql://localhost:3306/testdb");
// 設(shè)置連接數(shù)據(jù)庫用戶
dataSource.setUsername("root");
// 設(shè)置連接數(shù)據(jù)庫密碼
dataSource.setPassword("12345678");
// 獲取連接對象
Connection connection = dataSource.getConnection();
System.out.println(connection);
System.out.println(connection.getClass().getName());
// 將將連接對象歸還連接池
connection.close();
}
}
代碼中connection.close()方法不是關(guān)閉連接的操作讯蒲,是將當(dāng)前使用連接歸還到連接池中;
使用c3p0連接池連接數(shù)據(jù)庫
在使用c3p0連接池是需要下載相關(guān)的jar包進(jìn)行配置
使用c3p0連接池操作數(shù)據(jù)庫中审葬,使用到的連接連接池對象是ComboPooledDataSource野揪,通過連接池對象可以對連接池的一些屬性進(jìn)行配置吓坚,數(shù)據(jù)庫驅(qū)動,數(shù)據(jù)庫地址是牢,連接數(shù)據(jù)庫的用戶名僵井,密碼等,但是在使用c3p0連接池是驳棱,會有三種連接方式:
1.java代碼進(jìn)行連接池對象的設(shè)置
2.加載配置文件默認(rèn)配置
3.加載配置文件中自定義的配置信息
使用此c3p0連接池連接數(shù)據(jù)庫準(zhǔn)備條件:
1.準(zhǔn)備c3p0的jar包
2.創(chuàng)建c3p0-config.xml配置文件(使用配置文件時創(chuàng)建批什,創(chuàng)建的配置文件名稱必須為"c3p0-config.xml",且文件路徑必須在項目src根目錄下
)
1.連接池配置信息-java代碼配置
/**
* 連接池配置信息-java代碼配置
*
* @throws PropertyVetoException
* @throws SQLException
*/
@Test
public void connectPoolByC3P0CodeSettings() throws PropertyVetoException, SQLException {
// 初始化連接池對象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 設(shè)置數(shù)據(jù)庫驅(qū)動
dataSource.setDriverClass("com.mysql.jdbc.Driver");
// 設(shè)置數(shù)據(jù)庫地址
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
// 設(shè)置數(shù)據(jù)庫登錄名
dataSource.setUser("root");
// 設(shè)置數(shù)據(jù)庫登錄密碼
dataSource.setPassword("12345678");
// 連接池最大容量
dataSource.setMaxPoolSize(20);
// 初始化連接池容量
dataSource.setInitialPoolSize(10);
// 設(shè)置連接池容量滿之后創(chuàng)建連接對象的增量
dataSource.setAcquireIncrement(5);
// 獲取連接對象
Connection connection = dataSource.getConnection();
System.out.println(connection);
// 將連接對象歸還連接池
connection.close();
}
2.加載配置文件默認(rèn)配置
在src根目錄下創(chuàng)建文件c3p0-config.xml社搅,文件內(nèi)容為:
<?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>
配置文件創(chuàng)建成功則擼一波代碼驻债,來加載默認(rèn)配置信息獲取連接池對象乳规。
/**
* 使用c3p0默認(rèn)的配置文件進(jìn)行連接池對象的創(chuàng)建
*
* 在創(chuàng)建c3p0連接池對象時,會自動掃描項目src根目錄下是否存在c3p0-config.xml配置文件合呐,存在則加載配置文件中 默認(rèn)的配置信息
*
* @throws SQLException
*/
@Test
public void connectionPoolByC3P0DefaultConfig() throws SQLException {
// 初始化連接池對象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 獲取連接對象
Connection connection = dataSource.getConnection();
System.out.println(connection);
// 將連接對象歸還連接池
connection.close();
}
3.加載配置文件中自定義的配置信息
在加載配置文件時暮的,我們代碼中會使用ComboPooledDataSource類有參的構(gòu)造方法:
/**
* 使用c3p0自定義的配置文件進(jìn)行連接池對象的創(chuàng)建
* 在創(chuàng)建c3p0連接池對象時,會自動掃描項目src根目錄下是否存在c3p0-config.xml配置文件淌实,存在則加載配置文件中冻辩,則在初始化
* 連接池對象通過連接池對象構(gòu)造方法傳參來進(jìn)行培配置信息的加載
*
* @throws SQLException
*/
@Test
public void connectionPoolByC3P0CoustomConfig() throws SQLException {
// 初始化連接池對象
ComboPooledDataSource dataSource = new ComboPooledDataSource("coustom-config");
// 獲取連接對象
Connection connection = dataSource.getConnection();
System.out.println(connection);
// 將連接對象歸還連接池
connection.close();
}