无码视频在线观看,99人妻,国产午夜视频,久久久久国产一级毛片高清版新婚

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

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

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

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

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

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

    常用的開源鏈接池:


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

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


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

    dbcp將數(shù)據(jù)庫配置相關(guān)的信息單獨(dú)存放在.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 #<!-- 超時(shí)等待時(shí)間以毫秒為單位 6000毫秒/1000等于60秒 --> 

    20 maxWait=60000 

    21   

    22   

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

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

    25 connectionProperties=useUnicode=true;characterEncoding=utf8 

    26   

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

    28 defaultAutoCommit=true

    29   

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

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

    32 defaultReadOnly= 

    33   

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

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

    36 defaultTransactionIsolation=READ_COMMITTED

     
    配置好了,我們需要?jiǎng)?chuàng)建一個(gè)工具類,這個(gè)工具類自己封裝了數(shù)據(jù)庫鏈接池的實(shí)現(xiàn),并向外提供了一個(gè)返回?cái)?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     //這個(gè)靜態(tài)代碼塊確保其內(nèi)容只運(yùn)行一次,這里在第一次調(diào)用的時(shí)候,獲取一個(gè)工廠 

    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             //通過這個(gè)工廠,我們獲得一個(gè)根據(jù)資源文件配置的數(shù)據(jù)庫連接池 

    17             ds = factory.createDataSource(prop);             

    18               

    19         }catch (Exception e) { 

    20             throw new RuntimeException(e); 

    21         } 

    22     } 

    23       

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

    25     public static Connection getConnection() throws SQLException{ 

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

    27         return ds.getConnection(); 

    28     }    

    29       

    30 }

     

    這樣我們?cè)讷@取連接的時(shí)候可以直接通過這個(gè)靜態(tài)類獲得,在使用完成后,保持良好的習(xí)慣去關(guān)閉這個(gè)連接,這個(gè)連接實(shí)質(zhì)上不會(huì)關(guān)閉,會(huì)被連接池收回,DBCP使用了動(dòng)態(tài)代理來截?cái)嗾{(diào)用者對(duì)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可以采取多個(gè)配置 --> 

    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             //這個(gè)是加載配置文件 

    11   

    12             ds = new ComboPooledDataSource(); 

    13   

    14               

    15             //這個(gè)手動(dòng)設(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();    


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

    服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!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ù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      1
     
     
     
     

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