資料庫連接和C3P0連接池的學習筆記

6 人贊了文章

這個暑假花了幾天粗略看了一下資料庫的知識,也趁著沒開學,今天做點總結。

1 資料庫連接方式

  • 直連資料庫方式:DriverManager

需要引入的jar包:我用的版本是mysql-connecton-java-5.1.7-bin.jar

private String url="jdbc:mysql://localhost:3306/項目名";private String user="資料庫賬戶名";private String password = "資料庫登錄密碼";//第一步,註冊驅動程序 Class.forName("資料庫驅動的完整類名"); //即com.MySQL.jdbc.Driver //第二步,獲取一個資料庫的連接 Connection conn = DriverManager.getConnection(url,user,passord); //第三步,創建一個會話 Statement stmt=conn.createStatement(); //第四步,執行SQL語句,增加,刪除,修改記錄 stmt.executeUpdate("增加,刪除,修改記錄的SQL語句"); //或者查詢記錄 ResultSet rs = stmt.executeQuery("查詢記錄的SQL語句"); //第五步,對查詢的結果進行處理 while(rs.next()){ //對記錄的操作 } //第六步,關閉連接 rs.close(); //針對的是sql為查詢語句stmt.close(); conn.close();

  • 池化連接方式--組件通常有:DBCP、c3p0 還可以自定義連接池

DBCP 是 Apache 軟體基金組織下的開源連接池實現,使用DBCP數據源,應用程序應在系統中增加如下兩個 jar 文件:

? Commons-dbcp.jar:連接池的實現

? Commons-pool.jar:連接池實現的依賴庫

? 核心類:BasicDataSource

? 引入jar文件:commons-dbcp-1.4.jar、commons-pool-1.5.6.jar

我更喜歡用C3P0,所以下面的筆記就是關於C3P0的了哦~

C3P0 是最常用的連接池技術!Spring框架,默認支持C3P0連接池技術!

? 核心類:CombopooledDataSource

? 引入jar文件: c3p0-0.9.1.2.jar

? 配置文件:c3p0-config.xml

配置文件

<c3p0-config> <default-config>//默認是mysql資料庫 <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///項目名?useUnicode=true&amp;characterEncoding=utf8</property> <property name="user">資料庫用戶名</property> <property name="password">資料庫密碼</property> <property name="initialPoolSize">5</property> <property name="maxPoolSize">10</property> </default-config>//也可以用oracle資料庫 <named-config name="oracleConfig"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///項目名</property> <property name="user">資料庫用戶名</property> <property name="password">資料庫密碼</property> <property name="initialPoolSize">5</property> <property name="maxPoolSize">10</property> </named-config></c3p0-config>

// 創建c3p0連接池核心工具類// 自動載入src下c3p0的配置文件【c3p0-config.xml】ComboPooledDataSource dataSource = new ComboPooledDataSource();// 使用默認的配置PreparedStatement pstmt = null;// 獲取連接Connection con = dataSource.getConnection();//執行sql語句String sql="sql語句"//執行pstmt.executeUpdate();//關閉連接pstmt.close();con.close();

注意:創建C3P0連接池還可以在()加上字元串,字元串是其配置文件里需要的資料庫的名字

ComboPooledDataSource dataSource = new ComboPooledDataSource("oracleConfig");

2 兩種連接方式的比較

用戶每次請求都需要向資料庫獲得鏈接,而資料庫創建連接通常需要消耗相對較大的資源,創建時間也較長。假設網站一天10萬訪問量,資料庫伺服器就需要創建10萬次連接,極大的浪費資料庫的資源,並且極易造成資料庫伺服器內存溢出、拓機。如下圖:

所以說,如果每一次都重新創建資料庫連接,這將會十分耗費資源。

而資料庫連接池正式針對這個問題提出來的.資料庫連接池負責分配,管理和釋放資料庫連接,它允許應用程序重複使用一個現有的資料庫連接,而不是重新建立一個,如圖

綜上:資料庫連接池有效的節省了資源

粗略筆記就先到這裡,自己碼住~沒準幾年後找工作還靠這個來複習鞏固補充呢~


推薦閱讀:
相关文章