數據庫連接池
1、數據庫連接池的概念
用池來管理Connection,這可以重複使用Connection。有了池,所以我們就不用自己來創建Connection,而是通過池來獲取Connection對象。當使用完Connection後,調用Connection的close()方法也不會真的關閉Connection,而是把Connection“歸還”給池。池就可以再利用這個Connection對象了。
2、常用連接池
市場上有很成熟的連接池,像c3p0、dbcp等,不過Hibernate3.0及之後不再使用dbcp,說是有致命bug。就目前來看,還是c3p0在性能和穩定性上稍勝一籌,建議使用c3p0。
3、jdbc數據庫連接池接口(DataSource)
Java爲數據庫連接池提供了公共的接口:javax.sql.DataSource,各個廠商可以讓自己的連接池實現這個接口。這樣應用程序可以方便的切換不同廠商的連接池!換句話說,只要實現了javax.sql.DataSource接口,就是一個連接池。
3.1池參數(所有池參數都有默認值)
- 初始大小:10個
- 最大連接數:20個
- 最小空閒連接數:3個
- 最大空閒連接數:12個
- 增量:一次創建的最小單位(5個)
- 最大的等待時間:1000毫秒
3.2四大連接參數
連接池也是使用四大連接參數來完成創建連接對象!數據庫驅動、url、用戶名、密碼
3.3實現的接口
連接池必須實現:javax.sql.DataSource接口!
連接池返回的Connection對象,它的close()方法與衆不同!調用它的close()不是關閉,而是把連接歸還給池!
DBCP連接池的連接池對象是BasicDataSource,
Hibernate3.0之後使用c3p0連接池的 ComboPooledDataSource連接對象,
MyBatis使用PooledDataSource連接池對象,
SpringJdbcTemplate使用DriverManageDataSource連接池對象,
查看底層源碼,可以發現默認的連接池對象。