jdbc 自己理解
來源:程序員人生 發布時間:2015-04-30 08:20:48 閱讀次數:3029次
1、connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ZSORA10G", "gao", "admin");
如果代碼里面始終就只有1個connection,是不是可以寫jdbc代碼 可以!
但是會造成以下問題:例如有兩個客戶端訪問數據庫,同享1個connection ,如果其中1個 回滾了,那末第2個固然也回滾了,
所以在web項目中 都是 1個客戶端 1個connection 。這樣會致使 每次獲得連接 都要初始化獲得connection對象,這是非常消耗內存的
這就是為何我們使用連接池,連接池里面初始化幾個 連接,不夠用的時候 就繼續增加,不用的時候 再燒毀點,連接池里面始終
保存固定的connection。
關于connection.close的理解。 如果是 1個客戶端1個connection ,那末使用以后肯定要關掉連接 connection.close。不然容易內存溢出
關于連接池的 調用關閉connection方法 不是立即就關閉,而是讓對象回歸到連接池里面。
這些大于最小連接數的數據庫連接在使用完不會馬上被釋放,它將被放到連接池中等待重復使用或是空閑超時后被釋放。
連接池掉用關閉
BasicDataSource implements DataSource
public synchronized void close() throws SQLException {
closed = true;
GenericObjectPool oldpool = connectionPool;
connectionPool = null;
dataSource = null;
try {
if (oldpool != null) {
oldpool.close();
}
} catch(SQLException e) {
throw e;
} catch(RuntimeException e) {
throw e;
} catch(Exception e) {
throw new SQLNestedException("Cannot close connection pool",
e);
}
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈