Java web----資料庫連接池

來源:互聯網
上載者:User

標籤:java web   資料庫連接池   

池參數(所有池參數都有預設值)

初始大小:10個

最小空閑串連數:3個

增量:一次建立的最小單位(5個)

最大空閑串連數:12個

最大串連數:20個

最大的等待時間:1000毫秒 

四大串連參數

串連池也是使用四大串連參數來完成建立連線物件! 

實現的介面

串連池必須實現:javax.sql.DataSource介面! 

串連池返回的Connection對象,它的close()方法與眾不同!調用它的close()不是關閉,而是把串連歸還給池!

1 資料庫連接池的概念

用池來管理Connection,這可以重複使用Connection。有了池,所以我們就不用自己來建立Connection,而是通過池來擷取Connection對象。當使用完Connection後,調用Connection的close()方法也不會真的關閉Connection,而是把Connection“歸還”給池。池就可以再利用這個Connection對象了。



2 JDBC資料庫連接池介面(DataSource)

Java為資料庫連接池提供了公用的介面:javax.sql.DataSource,各個廠商可以讓自己的串連池實現這個介面。這樣應用程式可以方便的切換不同廠商的串連池!

3 自訂串連池(ItcastPool)

分析:ItcastPool需要有一個List,用來儲存連線物件。在ItcastPool的構造器中建立5個連線物件放到List中!當用人調用了ItcastPool的getConnection()時,那麼就從List拿出一個返回。當List中沒有串連可用時,拋出異常。

  我們需要對Connection的close()方法進行增強,所以我們需要自訂ItcastConnection類,對Connection進行裝飾!即對close()方法進行增強。因為需要在調用close()方法時把串連“歸還”給池,所以ItcastConnection類需要擁有池對象的引用,並且池類還要提供“歸還”的方法。


public class ItcastPool implements DataSource {private static Properties props = new Properties();private List<Connection> list = new ArrayList<Connection>();static {InputStream in = ItcastPool.class.getClassLoader().getResourceAsStream("dbconfig.properties");try {props.load(in);Class.forName(props.getProperty("driverClassName"));} catch (Exception e) {throw new RuntimeException(e);}}public ItcastPool() throws SQLException {for (int i = 0; i < 5; i++) {Connection con = DriverManager.getConnection(props.getProperty("url"), props.getProperty("username"),props.getProperty("password"));ItcastConnection conWapper = new ItcastConnection(con, this);list.add(conWapper);}}public void add(Connection con) {list.add(con);}public Connection getConnection() throws SQLException {if(list.size() > 0) {return list.remove(0);}throw new SQLException("沒串連了");}    ......}

public class ItcastConnection extends ConnectionWrapper {private ItcastPool pool;public ItcastConnection(Connection con, ItcastPool pool) {super(con);this.pool = pool;}@Overridepublic void close() throws SQLException {pool.add(this);}}



Java web----資料庫連接池

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.