亚洲Aⅴ无码Av红楼在线观看_国产午夜福利涩爱AⅤ_国产sm调教一区二区三区_精品人妻一区二区三区不卡毛片

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

JDBC數(shù)據(jù)庫連接池

發(fā)布時間:  2012/8/23 16:51:43

數(shù)據(jù)庫創(chuàng)建鏈接是比較消耗資源的,訪問量非常高的情況會造成內(nèi)存溢出等等負(fù)面影響。

大部分?jǐn)?shù)據(jù)鏈接池解決了這個問題,一般的實現(xiàn)思路是這樣得:

•鏈接池在初始化時首先獲取一定數(shù)量得鏈接并保存起來,程序請求鏈接時,直接由連接池返回一個,應(yīng)用程序使用完后再歸還給鏈接池。
•鏈接池維護(hù)一定數(shù)量的鏈接,當(dāng)鏈接不夠時,根據(jù)用戶的相關(guān)配置采取策略,例如讓用戶等待直到有一個空閑的鏈接,或者從數(shù)據(jù)庫端獲得新的鏈接。 -
 
 
點擊這里看代碼

常用的開源鏈接池:


DBCP
dbcp是apache的,tomcat也采用了此鏈接池。

使用需要導(dǎo)入兩個包
commons-dbcp.jar
commons-pool.jar


使用示例(模板代碼)
為了使代碼層次更清晰,減少耦合度并增加復(fù)用性,我們會將數(shù)據(jù)庫鏈接的類單獨抽取出來,它屬于工具類,可以歸為工具包中的類(比如:utils.JdbcUitls.java)

dbcp將數(shù)據(jù)庫配置相關(guān)的信息單獨存放在.properties配置文件中,我們只需要將dbcp示例中的.properties文件考入工程中。

dbcpconfig.propertes :

 
01 #連接設(shè)置 

02 driverClassName=com.mysql.jdbc.Driver 

03 url=jdbc:mysql://localhost:3306/day17 

04 username=root 

05 password=hang 

06   

07 #<!-- 初始化連接 --> 

08 initialSize=10 

09   

10 #最大連接數(shù)量 

11 maxActive=50 

12   

13 #<!-- 最大空閑連接 --> 

14 maxIdle=20 

15   

16 #<!-- 最小空閑連接 --> 

17 minIdle=5 

18   

19 #<!-- 超時等待時間以毫秒為單位 6000毫秒/1000等于60秒 --> 

20 maxWait=60000 

21   

22   

23 #JDBC驅(qū)動建立連接時附帶的連接屬性屬性的格式必須為這樣:[屬性名=property;]  

24 #注意:"user" 與 "password" 兩個屬性會被明確地傳遞,因此這里不需要包含他們。 

25 connectionProperties=useUnicode=true;characterEncoding=utf8 

26   

27 #指定由連接池所創(chuàng)建的連接的自動提交(auto-commit)狀態(tài)。 

28 defaultAutoCommit=true

29   

30 #driver default 指定由連接池所創(chuàng)建的連接的只讀(read-only)狀態(tài)。 

31 #如果沒有設(shè)置該值,則“setReadOnly”方法將不被調(diào)用。(某些驅(qū)動并不支持只讀模式,如:Informix) 

32 defaultReadOnly= 

33   

34 #driver default 指定由連接池所創(chuàng)建的連接的事務(wù)級別(TransactionIsolation)。 

35 #可用值為下列之一:(詳情可見javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE 

36 defaultTransactionIsolation=READ_COMMITTED

 
配置好了,我們需要創(chuàng)建一個工具類,這個工具類自己封裝了數(shù)據(jù)庫鏈接池的實現(xiàn),并向外提供了一個返回數(shù)據(jù)庫連接的方法  【 Linux公社 www.Linuxidc.com 】

JdbcUitls.java

 
01 public class JdbcUtils { 

02       

03     //DataSource是DBCP的數(shù)據(jù)庫連接池 

04     private static DataSource ds=null; 

05       

06     //既然是工具類,那就是拿來就能用的,不用new它 

07     //這個靜態(tài)代碼塊確保其內(nèi)容只運行一次,這里在第一次調(diào)用的時候,獲取一個工廠 

08     static{ 

09         try{ 

10             //讀取資源文件 

11             Properties prop =new Properties(); 

12             JdbcUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"); 

13               

14             //DBCP的連接池工廠 

15             BasicDataSourceFactory factory=new BasicDataSourceFactory(); 

16             //通過這個工廠,我們獲得一個根據(jù)資源文件配置的數(shù)據(jù)庫連接池 

17             ds = factory.createDataSource(prop);             

18               

19         }catch (Exception e) { 

20             throw new RuntimeException(e); 

21         } 

22     } 

23       

24     //返回一個數(shù)據(jù)庫連接 

25     public static Connection getConnection() throws SQLException{ 

26         //從DataSource中獲取一個空閑得連接并返回給調(diào)用它的方法 

27         return ds.getConnection(); 

28     }    

29       

30 }

 

這樣我們在獲取連接的時候可以直接通過這個靜態(tài)類獲得,在使用完成后,保持良好的習(xí)慣去關(guān)閉這個連接,這個連接實質(zhì)上不會關(guān)閉,會被連接池收回,DBCP使用了動態(tài)代理來截斷調(diào)用者對Connection.close()方法得直接操作。


C3P0

c3p0與dbcp一樣都是讀取配置文件

 

配置文件 c3p0-config.xml :

 
01 <?xml version="1.0" encoding="UTF-8"?> 

02 <c3p0-config> 

03       

04     <default-config> 

05           

06         <property name="driverClass">com.mysql.jdbc.Driver</property> 

07         <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb</property> 

08         <property name="user">root</property> 

09         <property name="password">root</property> 

10           

11         <property name="initialPoolSize">10</property> 

12   

13         <property name="maxIdleTime">30</property> 

14         <property name="maxPoolSize">100</property> 

15         <property name="minPoolSize">10</property> 

16         <property name="maxStatements">200</property> 

17           

18     </default-config> 

19       

20     <-- named-config可以采取多個配置 --> 

21     <named-config name="mysql"> 

22         <property name="acquireIncrement">50</property> 

23   

24         <property name="initialPoolSize">100</property> 

25         <property name="minPoolSize">50</property> 

26         <property name="maxPoolSize">1000</property><!-- intergalactoApp adopts a different approach to configuring statement caching -->

27         <property name="maxStatements">0</property> 

28         <property name="maxStatementsPerConnection">5</property> 

29           

30     </named-config> 

31   

32       

33   

34 </c3p0-config>

 

示例:
JdbcUtils_C3P0.java

 
01 public class JdbcUtils_C3PO { 

02   

03   

04     private static ComboPooledDataSource ds; 

05       

06   

07     static{ 

08   

09         try{ 

10             //這個是加載配置文件 

11   

12             ds = new ComboPooledDataSource(); 

13   

14               

15             //這個手動設(shè)置,不加載配置文件 

16   

17             /*ds.setDriverClass("com.mysql.jdbc.Driver"); 

18   

19             ds.setJdbcUrl("jdbc:mysql://localhost:3306/day16"); 

20   

21             ds.setUser("root"); 

22   

23             ds.setPassword("root"); 

24   

25             ds.setInitialPoolSize(20);*/

26   

27         }catch (Exception e) { 

28   

29             throw new ExceptionInInitializerError(e); 

30   

31         } 

32   

33     } 

34   

35       

36   

37     public static Connection getConnection() throws SQLException{ 

38   

39         return ds.getConnection();    


本文出自:億恩科技【www.allwellnessguide.com】

服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機 24小時售后服務(wù)電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務(wù)熱線