java ee中使用dbcp

孫悟空空發表於2015-07-29

java ee中使用dbcp

使用java進行網站開發時,訪問資料庫資料必不可少,而dbcp在管理資料庫連線方面有著獨特的優勢。


dbcp

DBCP(DataBase connection pool),資料庫連線池。是 apache 上的一個 java 連線池專案,也是 tomcat 使用的連線池元件。單獨使用dbcp需要2個包:commons-dbcp.jar,commons-pool.jar由於建立資料庫連線是一個非常耗時耗資源的行為,所以通過連線池預先同資料庫建立一些連線,放在記憶體中,應用程式需要建立資料庫連線時直接到連線池中申請一個就行,用完後再放回去。 —— [ 百度百科 ]

簡單說就是一個apache已經編好的資料庫連線池,直接拿來用就可以。比自己寫的訪問資料的程式要快且高效。

使用方法

  • 環境說明
    請注意:本人使用mysql資料庫

  • 準備工作

    1. mysql-connector-java-5.1.26-bin.jar,這是mysql的jdbc的驅動程式,下載後放到WebContent/WEB-INF/lib檔案下

    2. commons-dbcp-1.4.jar,commons-pool-1.5.6.jar,這兩個jar是dbcp所必須的兩個jar包,下載後引入到工程中(也就是以built path的方式引入到工程中)

    3. commons-logging-1.1.3.jar,這個一個日誌jar包,我想說的是,如果是開發專案的話,儘量保持使用日誌的習慣吧,做好日誌對專案開發,專案維護都有很大的幫助。同樣以built path的形式引入到工程中

程式碼塊

如果準備工作已經完成的話,下面開始上程式碼了

DBManager類

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;


import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class DBManager {
    private static final Log log = LogFactory.getLog(DBManager.class); 
    private static final String configFile = "dbcp.properties";

    private static DataSource dataSource;
    static{
        Properties dbProperties = new Properties();
        try{
            dbProperties.load(DBManager.class.getClassLoader().getResourceAsStream(configFile));
            dataSource = BasicDataSourceFactory.createDataSource(dbProperties);
            Connection conn = getConn();
            DatabaseMetaData mdm = conn.getMetaData();
            log.info("Connected to " + mdm.getDatabaseProductName() + " "
                    + mdm.getDatabaseProductVersion());
            if(conn != null){
                conn.close();
            }
        } catch(Exception e){
            log.error("初始化連線池失敗:" + e);
            e.printStackTrace();
        }

    }
    private DBManager(){}

    public static final Connection getConn(){
        Connection conn = null;
        try{
            conn = dataSource.getConnection();
        }catch(SQLException e){
            log.error("獲取資料庫連線失敗:" + e);
        }
        return conn;
    }

    public static void closeConn(Connection conn){
        try{
            if(conn != null && !conn.isClosed()){
                conn.setAutoCommit(true);
                conn.close();
            }
        }catch(SQLException e){
            log.error("關閉資料庫連線失敗:" + e);
        }
    }
}

其中,configFile = “dbcp.properties” 實際指的是一個配置檔案,具體內容如下:

dbcp.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/資料庫名
username=root        
password=1234556
maxActive=30
maxIdle=10
maxWait=1000
removeAbandoned=true
removeAbandonedTimeout=180

各引數的意義,請自行搜尋,在此不贅述。
注意:dbcp.properties檔案是放在src檔案下的

測試類 TomcatDbTest類

package DBbase;

import java.sql.Connection;
import java.sql.SQLException;

public class TomcatDbTest {

    public static void main(String[] args) {    
        Connection conn = DBManager.getConn();
        if(conn != null){
            System.out.println("成功建立連線");
            try {
                conn.close();
            } catch (SQLException e) {
                System.out.println("未成功關閉連線");
                e.printStackTrace();
            }
            return;
        }
        System.out.println("連線資料庫失敗!");

    }
}

結束語

以上說明和程式碼參考瞭如下網站,向提供者致敬。
[程式碼和說明的參考網站 ]

相關文章