文章出處

一、連接池的作用

數據庫的連接是一種很重要的資源,如果一個項目比較小,連接數據庫的次數比較少,我們可以采取直連的方式:“獲取連接----使用----關閉連接”。但是如果一個網站訪問量很大,假如同時有幾百萬個用戶,這時候就會創建幾百萬個連接,這樣就很容易使數據庫崩潰,從而使網站癱瘓。這時候數據庫的連接池技術就可以起到作用了,維護連接池中的連接個數,如果來個請求連接,先看連接池中是否有空閑的連接,如果有就分配出去,用完就釋放,否則這個請求就必須等待。這就很好的解決了數據庫的壓力。這就像去餐廳一樣,人多的時候我們就得排號等待空閑的位置。

二、dbcp的使用

1.導入jar包。

dbcp依賴3個jar包。

commons-dbcp2-2.1.1.jar

commons-logging-1.1.1.jar

commons-pool2-2.4.2.jar

另外連接數據庫還需要單獨的jar包,我的數據庫是MySql,所以我用的是:mysql-connector-java-5.1.14.jar

 

2.配置參數

方式1.:通過配置文件配置(dbcp.properties)

1 driverClassName=com.mysql.jdbc.Driver
2 url=jdbc:mysql://localhost/paper_tag
3 username=root
4 password=admin
5 maxActive=30
6 maxIdle=10
7 maxWait=1000
8 initialSize=5
View Code

 

方式2:通過代碼配置

       BasicDataSource bds = new BasicDataSource();  
       bds.setUrl(url);  
       bds.setDriverClassName(driverClassName);  
       bds.setUsername(username);  
       bds.setPassword(password);  
       bds.setInitialSize(initialSize);  
       bds.setMaxActive(maxActive);  
       bds.setMinIdle(minIdle);  
       bds.setMaxIdle(maxIdle);  
       bds.setMaxWait(maxWait);  

  

3. 獲取連接

  • 下面是獲取連接的類DBCPUtil

    private static DataSource ds;
    
        private static final String configFile = "/dbcp.properties";
    
        public DBCPUtil() {
            initDBCP();
        }
    
        private void initDBCP() {
            Properties prop = new Properties();
            try {
                prop.load(Object.class.getResourceAsStream(configFile));
                ds = BasicDataSourceFactory.createDataSource(prop);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public Connection getConn() {
            Connection conn = null;
            if(ds != null) {
                try {
                    conn = ds.getConnection();
                    conn.setAutoCommit(false);
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return conn;
        }
    
        public static void main(String[] args) {
            DBCPUtil db = new DBCPUtil();
            System.out.println(db.getConn());
        }
    }
    

      

     


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()