Java中的數據源就是javax.sql.DataSource。DataSource的建立能夠有不一樣的實現。DataSource 一般被稱爲數據源,它包含鏈接池和鏈接池管理兩個部分,習慣上也常常把 DataSource 稱爲鏈接池。java
JNDI方式建立DataSource: (Java Naming and Directory Interface,Java命名和目錄接口)。首先要配置數據源的相關鏈接信息,也就是數據源鏈接池。該配置應該在Tomcat安裝目錄下的conf/context.xml文件中配置。mysql
鏈接池基本的思想,原理:sql
在系統初始化的時候,將數據庫鏈接做爲對象存儲在內存中,當用戶須要訪問數據庫時,並不是創建一個新的鏈接,而是從鏈接池中取出一個已創建的空閒鏈接對象。數據庫
數據庫鏈接池負責分配,管理和釋放數據庫鏈接,它容許應用程序重複使用一個現有的數據庫鏈接,而不是從新創建一個。網站
鏈接池通俗理解: ui
數據庫鏈接池就是準備一個池子,裏面放着不少生成好的Connection,用戶請求得到鏈接,就不須要getConnection,只要從池子裏拿一個給他就好了,這樣省掉了生成Connection的時間,效率上會有很大提升,不過固然會佔用一些內存~稍微大點網站都會用到數據庫鏈接池的~spa
數據庫鏈接池技術的優勢: xml
資源重用對象
更快的系統反應速度blog
新的資源分配手段
統一的鏈接管理,避免數據庫鏈接泄露
開源的數據庫鏈接池 C3P0 DBCP Proxool XAPool 等
以C3p0得到數據源爲例:
@Test public void testC3P0() throws Exception{ ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver cpds.setJdbcUrl( "jdbc:mysql:///atguigu" ); cpds.setUser("root"); cpds.setPassword("1230"); System.out.println(cpds.getConnection()); }