03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池
DBCP數據源
使用DBCP數據源,需要導入兩個jar包
Commons-dbcp.jar:連接池的實現
Common-pool.jar:連接池實現的依賴庫。
?
導入mysql的jar包。
?
DBCP核心API
BasciDataSource?? 它可以通過實例化對象的方式獲得一個對象。
它里面有如下方法:
setDriverClassName(String driverClassName) 設置驅動類的名稱。
setInitialSize(int initialSize) 設置初始化時的鏈接數目。
setMaxActive(int maxIdle) 設置最大的并發訪問數量。
setMaxIdle(int maxIdle): 設置最大的閑置數目。
setPassword:用于設置密碼。
setUrl:設置url
setUsername:設置用戶名。
?
?
數據源實現BasicDataSourceFactory?? 用于創建數據源的工廠類,
?
不設配置文件時使用BasicDataSource的程序的寫法:
package cn.toto.utils;
?
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
?
import javax.sql.DataSource;
?
import org.apache.commons.dbcp.BasicDataSource;
?
public class JdbcUtils {
??? private JdbcUtils(){}
??? //定義BasicDataSource的父類接口的形式,獲得ds的參數。
??? private static DataSource ds;
???
??? static {
?????????? //要想使用寫好的數據源的功能,得先初始化一個dbcp連接池
?????????? BasicDataSource bds = new BasicDataSource();
??????????
?????????? //設置一系列參數
?????????? bds.setDriverClassName("com.mysql.jdbc.Driver");
?????????? bds.setUrl("jdbc:mysql://localhost:3306/day14");
?????????? bds.setUsername("root");
?????????? bds.setPassword("123456");
??????????
?????????? //設置初始化大小
?????????? bds.setInitialSize(5);?//初始時設置5個連接數
?????????? bds.setMaxActive(20);//設置并發訪問數目。
?????????? //bds.setMaxWait(0);//設置最大等待時間。不等待。
??????????
?????????? ds = bds;? //獲得數據是通過父接口的DataSource接口。
??? }
??? //獲得連接池
??? public static DataSource getDataSource(){
?????? return ds;
??? }
?
???
??? //獲得與指定數據庫的連接
??? public static Connection getConnection() throws SQLException{
?????? //從連接池返回一個連接??
?????? return ds.getConnection();
??? }
???
??? public static void release(ResultSet rs,Statement stmt,Connection conn){
?????? if(rs!=null) {
??? ?????? try{
????????????? rs.close();
?????????? }catch(SQLException e){
????????????? e.printStackTrace();
?????????? }
?????????? rs = null;
?????? }
?????? if(stmt!=null){
?????????? try{
????????????? stmt.close();
?????????? }catch(SQLException e){
????????????? e.printStackTrace();
?????????? }
?????????? stmt = null;
?????? }
?????? if(conn!= null) {
?????????? try{
????????????? conn.close();
?????????? }catch(SQLException e){
????????????? e.printStackTrace();
?????????? }
?????????? conn = null;
?????? }
??? }
}
?
用于驗證的主函數的寫法:
package cn.toto.demo;
?
import java.sql.Connection;
import java.sql.SQLException;
?
import cn.toto.utils.JdbcUtils;
?
public class Demo {
?
??? public static void main(String[] args) throws SQLException {
??????
?????? for(int i=0;i<30;i++){
?????????? Connection conn = JdbcUtils.getConnection();//如果只寫這句,程序將一直等待執行。
?????????? System.out.println(conn);//不寫下面一句時,打印輸出,驗證是否有20條,結果是20條
??????????
?????????? conn.close();//用一個放回一個,加上這一句之后將出現30條數據。
?????? }
??? }
?
}
?
在文檔中還有一個方法:
org.apache.commons.dbcp
Class BasicDataSourceFactory它里面有一個這樣的方法:
createDataSource(Properties?properties)
??????????Creates andconfigures a BasicDataSourceinstance based on the given properties.
它是根據Properties,根據properties中的信息獲得信息。
配置dbcp的配置文件的方法是:找到文檔中的Configuration,里面有多個屬性。
在src下面編寫一個一個配置文件config.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day14
username=root
password=123456
initialSize=5
maxiActive=20
?
通過配置文件的方式獲得的數據源的源碼是:
package cn.toto.utils;
?
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
?
import javax.sql.DataSource;
?
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
?
public class JdbcUtils {
??? private JdbcUtils() {
??? }
?
??? // 定義BasicDataSource的父類接口的形式,獲得ds的參數。
??? private static DataSource ds;
?
??? static {
?????? try {
?????????? InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream(
????????????????? "config.properties");//通過類加載的方式獲得獲得配置文件的流
?????????? Properties prop = new Properties();
?????????? prop.load(in);//通過流將配置項加載進來。
?????????? //通過工廠類讀取
?????????? ds = BasicDataSourceFactory.createDataSource(prop);
?????? } catch (Exception e) {
?????????? throw new ExceptionInInitializerError();
?????? }
??? }
?
??? // 獲得連接池
??? public static DataSource getDataSource() {
?????? return ds;
??? }
?
??? // 獲得與指定數據庫的連接
??? public static Connection getConnection() throws SQLException {
?????? // 從連接池返回一個連接
?????? return ds.getConnection();
??? }
?
??? public static void release(ResultSet rs, Statement stmt, Connection conn) {
?????? if (rs != null) {
?????????? try {
????????????? rs.close();
?????????? } catch (SQLException e) {
????????????? e.printStackTrace();
?????????? }
?????????? rs = null;
?????? }
?????? if (stmt != null) {
?????????? try {
????????????? stmt.close();
?????????? } catch (SQLException e) {
????????????? e.printStackTrace();
?????????? }
?????????? stmt = null;
?????? }
?????? if (conn != null) {
?????????? try {
????????????? conn.close();
?????????? } catch (SQLException e) {
????????????? e.printStackTrace();
?????????? }
?????????? conn = null;
?????? }
??? }
}
總結
以上是生活随笔為你收集整理的03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 02_c3p0之c3p0-config.
- 下一篇: 07_数据库创建,添加c3p0操作所需的