在使用開發基於數據庫的web程序時,傳統的模式基本是按如下步驟: java
這種模式開發,存在的問題:mysql
JDBC 的數據庫鏈接池使用 javax.sql.DataSource 來表示,DataSource 只是一個接口,該接口一般由服務器(Weblogic, WebSphere, Tomcat)提供實現,也有一些開源組織提供實現:web
DataSource 一般被稱爲數據源,它包含鏈接池和鏈接池管理兩個部分,習慣上也常常把 DataSource 稱爲鏈接池.sql
(1)基本用法數據庫
/** * 使用 DBCP數據庫鏈接池 * 1.加入jar包: * commons-dbcp2-2.1.1.jar * commons-pool2-2.4.2.jar * 2.建立數據庫鏈接 * 3.爲數據源實例指定必需的屬性 * 4.從數據源中獲取數據庫鏈接 * @throws SQLException */ @Test public void test17() throws SQLException { BasicDataSource dataSource = null; //1.建立DBPC數據源實例 dataSource = new BasicDataSource(); //2.爲數據源實例指定必需的屬性 dataSource.setUsername("root"); dataSource.setPassword("12345"); dataSource.setUrl("jdbc:mysql://localhost:3306/jdbctest"); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //3.指定數據庫的一些可選屬性 //3.1 指定數據庫鏈接池初始化鏈接數的個數 dataSource.setInitialSize(10); //3.2 指定最大鏈接數,同一時間能夠同時向數據庫申請的鏈接數 dataSource.setMaxTotal(50); //3.3 其餘... //3.從數據源中獲取數據庫鏈接 Connection connection = dataSource.getConnection(); System.out.println(connection.getClass()); }
(2)更好的使用方法服務器
/** * 1. 加載 dbcp的 properties配置文件:配置文件中的鍵須要來自BasicDataSource的屬性 * 2. 調用 BasicDataSourceFactory的 createDataSource方法才建立數據庫鏈接 * 3. 從 DataSource實例中獲取數據庫鏈接。 * * @throws Exception */ @Test public void test18() throws Exception { Properties properties = new Properties(); InputStream in = JdbcTest.class.getClassLoader().getResourceAsStream("dbcp.properties"); properties.load(in); DataSource dataSource = BasicDataSourceFactory.createDataSource(properties); //BasicDataSource basicDataSource = (BasicDataSource) dataSource; }
(1)基本用法函數
(2)更好的用法性能
/** * 1. 建立 c3p0-config.xml 文件, * 參考幫助文檔中 Appendix B: Configuation Files 的內容 * 2. 建立 ComboPooledDataSource 實例; * DataSource dataSource = * new ComboPooledDataSource("helloc3p0"); * 3. 從 DataSource 實例中獲取數據庫鏈接. */ @Test public void testC3poWithConfigFile() throws Exception{ DataSource dataSource = new ComboPooledDataSource("helloc3p0"); System.out.println(dataSource.getConnection()); ComboPooledDataSource comboPooledDataSource = (ComboPooledDataSource) dataSource; System.out.println(comboPooledDataSource.getMaxStatements()); }
附c3p0-config.xml:學習
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <named-config name="helloc3p0"> <!-- 指定鏈接數據源的基本屬性 --> <property name="user">root</property> <property name="password">1230</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///atguigu</property> <!-- 若數據庫中鏈接數不足時, 一次向數據庫服務器申請多少個鏈接 --> <property name="acquireIncrement">5</property> <!-- 初始化數據庫鏈接池時鏈接的數量 --> <property name="initialPoolSize">5</property> <!-- 數據庫鏈接池中的最小的數據庫鏈接數 --> <property name="minPoolSize">5</property> <!-- 數據庫鏈接池中的最大的數據庫鏈接數 --> <property name="maxPoolSize">10</property> <!-- C3P0 數據庫鏈接池能夠維護的 Statement 的個數 --> <property name="maxStatements">20</property> <!-- 每一個鏈接同時可使用的 Statement 對象的個數 --> <property name="maxStatementsPerConnection">5</property> </named-config> </c3p0-config>
JDBC學習筆記:大數據
1. 獲取數據庫鏈接 http://my.oschina.net/daowuming/blog/704243
2. 經過Statement執行更新、查詢操做 http://my.oschina.net/daowuming/blog/704384
3. 使用PrepareStatement http://my.oschina.net/daowuming/blog/704432
4. 使用ResultSetMetaData 對象處理結果集元數據 http://my.oschina.net/daowuming/blog/704487
5. 使用DatabaseMetaData獲取數據庫信息 http://my.oschina.net/daowuming/blog/704553
6. BLOB http://my.oschina.net/daowuming/blog/704593
7. 處理事務與隔離級別 http://my.oschina.net/daowuming/blog/704611
8. 批量處理 http://my.oschina.net/daowuming/blog/704641
9. 數據庫鏈接池 ----當前----
10. 調用函數與存儲過程 http://my.oschina.net/daowuming/blog/704813