1. 程式人生 > >【JavaSE】資料庫連線池

【JavaSE】資料庫連線池

DBCP

什麼是?

DBCP(DataBase Connection Pool)資料庫連線池,是java資料庫連線池的一種,由Apache開發,通過資料庫連線池,可以讓程式自動管理資料庫連線的釋放和斷開

怎麼用?

1. 匯入jar包  commons-dbcp.jar,commons-pool.jar

2.  不使用配置檔案方式


        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost/users");
        dataSource.setUsername("root");
        dataSource.setPassword("root");

        
        conn = dataSource.getConnection();
        String sql = "select * from user";
        pstmt = conn.prepareStatement(sql);

        ...


3. 使用配置檔案方式。

        1. 在 src 下定義配置檔案 dbcp.properties. 內容如下: 


            #連線設定
            driverClassName=com.mysql.jdbc.Driver
            url=jdbc:mysql://localhost:3306/jdbc
            username=root
            password=root

            ...

        

        2. 使用程式碼讀取配置檔案,即可獲取連線池

            Properties properties = new Properties();
            properties.load(new FileInputStream("src/dbcp.properties"));
            DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);

            conn = dataSource.getConnection();
            String sql = "select * from user";
            pstmt = conn.prepareStatement(sql);

            ...
 

C3P0

什麼是?

C3P0是一個開源的JDBC連線池,它實現了資料來源和JNDI繫結,支援JDBC3規範和JDBC2的標準擴充套件。目前使用它的開源專案有Hibernate,Spring等。

怎麼用?

1. 拷貝jar 檔案   c3p0-0.9.1.2.jar


2. 不使用配置檔案方式

        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost/users");
        dataSource.setUser("root");
        dataSource.setPassword("root");

        conn = dataSource.getConnection();
        String sql = "select * from user";
        pstmt = conn.prepareStatement(sql);

        ...


3. 使用配置檔案方式。

> c3p0的配置檔案 支援 properties , 也支援 xml 方式。 不過開發中,一般使用xml方式來配置
    1.  src下, 建立xml檔案,名為:c3p0-config.xml  注意此處,名字需要固定了。


            <c3p0-config>
                  <default-config>
                            <property name="driverClass">com.mysql.jdbc.Driver</property>
                            <property name="jdbcUrl">jdbc:mysql://localhost/user</property>
                            <property name="user">root</property>
                            <property name="password">root</property>
    
                        <!-- 可選配置 -->
                            <property name="initialPoolSize">5</property>
              </default-config>

        </c3p0-config>

            

    2. 程式碼中獲取連線child物件

            ComboPooledDataSource dataSource = new ComboPooledDataSource();