<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    java數據庫連接池 dbcp 的用法

      需要下commons-dbcp  commons-pool 這兩個jar包

    import org.apache.commons.dbcp.BasicDataSource;
    import org.apache.commons.dbcp.BasicDataSourceFactory;
    import java.sql.SQLException;
    import java.sql.Connection;
    import java.util.Properties;
    public class ConnectionSource {
    private static BasicDataSource dataSource = null;
    public ConnectionSource() {
    }
    public static void init() {
    if (dataSource != null) {
    try {
    dataSource.close();
    } catch (Exception e) {
    //
    }
    dataSource = null;
    }
    try {
    Properties p = new Properties();
    p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");
    p.setProperty("url", "jdbc:oracle:thin:@192.168.0.1:1521:testDB");
    p.setProperty("password", "scott");
    p.setProperty("username", "tiger");
    p.setProperty("maxActive", "30");
    p.setProperty("maxIdle", "10");
    p.setProperty("maxWait", "1000");
    p.setProperty("removeAbandoned", "false");
    p.setProperty("removeAbandonedTimeout", "120");
    p.setProperty("testOnBorrow", "true");
    p.setProperty("logAbandoned", "true");
    dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p);
    } catch (Exception e) {
    //
    }
    }
    public static synchronized Connection getConnection() throws  SQLException {
    if (dataSource == null) {
    init();
    }
    Connection conn = null;
    if (dataSource != null) {
    conn = dataSource.getConnection();
    }
    return conn;
    }
    }

      接下來,在我們的應用中,只要簡單地使用ConnectionSource.getConnection()就可以取得連接池中的數據庫連接,享受數據庫連接帶給我們的好處了。當我們使用完取得的數據庫連接后,只要簡單地使用connection.close()就可把此連接返回到連接池中,至于為什么不是直接關閉此連接,而是返回給連接池,這是因為dbcp使用委派模型來實現Connection接口了。

      在使用Properties來創建BasicDataSource時,有很多參數可以設置,比較重要的還有:

      testOnBorrow、testOnReturn、testWhileIdle,他們的意思是當是取得連接、返回連接或連接空閑時是否進行有效性驗證(即是否還和數據庫連通的),默認都為false。所以當數據庫連接因為某種原因斷掉后,再從連接池中取得的連接,實際上可能是無效的連接了,所以,為了確保取得的連接是有效的, 可以把把這些屬性設為true。當進行校驗時,需要另一個參數:validationQuery,對oracle來說,可以是:SELECT COUNT(*) FROM DUAL,實際上就是個簡單的SQL語句,驗證時,就是把這個SQL語句在數據庫上跑一下而已,如果連接正常的,當然就有結果返回了。

      還有2個參數:timeBetweenEvictionRunsMillis 和 minEvictableIdleTimeMillis, 他們兩個配合,可以持續更新連接池中的連接對象,當timeBetweenEvictionRunsMillis 大于0時,每過timeBetweenEvictionRunsMillis 時間,就會啟動一個線程,校驗連接池中閑置時間超過minEvictableIdleTimeMillis的連接對象。

    posted on 2013-09-24 10:18 順其自然EVO 閱讀(382) 評論(0)  編輯  收藏 所屬分類: 數據庫

    <2013年9月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 黄网站色成年片大免费高清| 久久亚洲私人国产精品| 亚洲精品国产第一综合99久久 | 成人免费在线视频| 亚洲国产成人91精品| 在线观看日本免费a∨视频| 亚洲一区二区三区在线网站| 99久久精品日本一区二区免费 | 精品国产_亚洲人成在线高清 | 亚洲黄色免费在线观看| 亚洲国产日韩在线成人蜜芽 | 亚洲欧美日韩综合久久久| 成人无遮挡裸免费视频在线观看 | 免费鲁丝片一级在线观看| www亚洲精品久久久乳| 免费一级毛片在线播放| 一级做α爱过程免费视频| 中文字幕亚洲综合久久菠萝蜜| 99久久国产精品免费一区二区 | 无码人妻久久一区二区三区免费丨| 国产成人精品日本亚洲网址| 国产精品高清全国免费观看| xxxxxx日本处大片免费看| 国产精品国产亚洲精品看不卡| 国产高清免费视频| 激情婷婷成人亚洲综合| 国产精品亚洲片在线| www视频在线观看免费| 理论亚洲区美一区二区三区| 亚洲免费观看视频| 91情侣在线精品国产免费| 一区二区视频免费观看| 亚洲日本国产乱码va在线观看| 国产一区二区免费在线| 九九精品成人免费国产片| 国产成人精品亚洲2020| 国产亚洲欧洲Aⅴ综合一区| 69av免费视频| h在线看免费视频网站男男| 亚洲乱码一二三四区麻豆| 亚洲性久久久影院|