開來源資料庫串連池

來源:互聯網
上載者:User

 

                                                                                                 開來源資料庫串連池

通常我們把DataSource的實現,按其英文含義稱之為資料來源,資料來源中都包含了資料庫連接池的實現。

1、DBCP 資料庫連接池

       public class DBManager {

    private static DataSource ds=null;

    static{

       InputStream is=DBManager.class.getClassLoader().getResourceAsStream("dbcp.properties");

       Properties p=new Properties();

       try {

           p.load(is);

           ds=BasicDataSourceFactory.createDataSource(p);//DBCP資料來源

       } catch (IOException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } catch (Exception e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

      

    }

 

    public static Connection getConnection(){

       Connection con=null;

       try {

           con = ds.getConnection();

       } catch (SQLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }  

       return con;

    }

    public static void release(Connection con,Statement st,ResultSet rs){

         if(rs!=null){

              try{

                  rs.close();

              }catch (Exception e) {e.printStackTrace();}

               rs = null;

           }

           if(con!=null){

              try{

                  con.close();

              }catch (Exception e) {e.printStackTrace();}

              con = null;

           }

    }

}

dbcp.properties檔案

#\u8FDE\u63A5\u8BBE\u7F6E

driverClassName=com.mysql.jdbc.Driver

url=jdbc\:mysql\://localhost\:3306/jdbc

username=root

password=1234

 

#<!-- \u521D\u59CB\u5316\u8FDE\u63A5 -->

initialSize=5

 

#\u6700\u5927\u8FDE\u63A5\u6570\u91CF

maxActive=5

 

#<!-- \u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 -->

maxIdle=20

 

#<!-- \u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 -->

minIdle=5

 

#<!-- \u8D85\u65F6\u7B49\u5F85\u65F6\u95F4\u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D 60000\u6BEB\u79D2/1000\u7B49\u4E8E60\u79D2 -->

maxWait=3000

 

#JDBC\u9A71\u52A8\u5EFA\u7ACB\u8FDE\u63A5\u65F6\u9644\u5E26\u7684\u8FDE\u63A5\u5C5E\u6027\u5C5E\u6027\u7684\u683C\u5F0F\u5FC5\u987B\u4E3A\u8FD9\u6837\uFF1A[\u5C5E\u6027\u540D=property;]

#\u6CE8\u610F\uFF1A"user" \u4E0E "password" \u4E24\u4E2A\u5C5E\u6027\u4F1A\u88AB\u660E\u786E\u5730\u4F20\u9012\uFF0C\u56E0\u6B64\u8FD9\u91CC\u4E0D\u9700\u8981\u5305\u542B\u4ED6\u4EEC\u3002

connectionProperties=useUnicode=true;characterEncoding=UTF-8

 

#\u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u81EA\u52A8\u63D0\u4EA4\uFF08auto-commit\uFF09\u72B6\u6001\u3002

defaultAutoCommit=true

 

#driver default \u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u53EA\u8BFB\uFF08read-only\uFF09\u72B6\u6001\u3002

#\u5982\u679C\u6CA1\u6709\u8BBE\u7F6E\u8BE5\u503C\uFF0C\u5219\u201CsetReadOnly\u201D\u65B9\u6CD5\u5C06\u4E0D\u88AB\u8C03\u7528\u3002\uFF08\u67D0\u4E9B\u9A71\u52A8\u5E76\u4E0D\u652F\u6301\u53EA\u8BFB\u6A21\u5F0F\uFF0C\u5982\uFF1AInformix\uFF09

defaultReadOnly=

 

#driver default \u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u4E8B\u52A1\u7EA7\u522B\uFF08TransactionIsolation\uFF09\u3002

#\u53EF\u7528\u503C\u4E3A\u4E0B\u5217\u4E4B\u4E00\uFF1A\uFF08\u8BE6\u60C5\u53EF\u89C1javadoc\u3002\uFF09NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE

defaultTransactionIsolation=READ_UNCOMMITTED

 

2、C3P0 資料庫連接池

public class DBManager_C3p0 {

    private static ComboPooledDataSource ds=null;

    //構建資料庫連接池對象

    static{

       ds=new ComboPooledDataSource("mysql");

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

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

       ds.setUser("root");

       ds.setPaeeword("1234");

       ds.setInitialPoolSize(10);

       ds.setMaxPoolSize(50);

       ds.setMinPoolSize(10);//C3P0資料來源*/

    }

    public static Connection getConnection(){

       Connection con=null;

       try {

           con = ds.getConnection();

       } catch (SQLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }  

       return con;

    }

    public static void release(Connection con,Statement st,ResultSet rs){

         if(rs!=null){

              try{

                  rs.close();

              }catch (Exception e) {e.printStackTrace();}

               rs = null;

           }

           if(con!=null){

              try{

                  con.close();

              }catch (Exception e) {e.printStackTrace();}

              con = null;

           }

    }

}

c3p0_config.xml檔案

  <c3p0-config>

    <default-config>

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

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

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

       <property name="password">1234</property>

   

       <property name="automaticTestTable">con_test</property>

       <property name="checkoutTimeout">30000</property>

       <property name="idleConnectionTestPeriod">30</property>

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

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

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

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

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

    </default-config>

   

    <!-- This app is massive! -->

    <named-config name="mysql">

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

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

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

       <property name="password">1234</property>

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

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

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

    <property name="maxPoolSize">1000</property>

    </named-config>

</c3p0-config>

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.