數據庫連接池

數據庫連接池

數據庫連接池(Connection pooling)是程序啓動時建立足夠的數據庫連接,並將這些連接組成一個連接池,由程序動態的對池中的連接進行申請、使用、釋放;  
(1)程序初始化時創建連接池 
(2)使用時向連接池申請可用連接 
(3)使用完畢,將連接返還給連接池  
(4)程序退出時,斷開所有的連接,並釋放資源
創建數據庫連接池

DBCP : Apache組織下面的一個開源的數據庫連接池
1.利用maven 導入DBCP連接池依賴的jar
commons-dbcp2-2.4.0
commons-dbutils1.4
mysql-connector-java-5.1.11-bin\

<!--mysql驅動,由於DBCP封裝的JDBC,所以仍然需要mysql驅動包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>
 
        <!--<!– dbcp包 –>-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
 
        <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
        <dependency>
            <groupId>commons-dbutils</groupId>
            <artifactId>commons-dbutils</artifactId>
            <version>1.4</version>
        </dependency>

得到DataSource對象

public class DBCPUtils {
 
    private static BasicDataSource dataSource;
 
    static {
        dataSource = new BasicDataSource();
        //基本設置
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        //高級設置
        dataSource.setInitialSize(10);//初始化連接
        dataSource.setMinIdle(5);//最小空閒連接
        dataSource.setMaxIdle(20);//最大空閒連接
        dataSource.setMaxActive(50);//最大連接數量
        dataSource.setMaxWait(1000);//超時等待時間以毫秒爲單位
    }
 
    /**
     * 獲取DataSource對象
     * @return
     */
    public static DataSource getDataSource() {
        return dataSource;
    }
}

演示插入操作

public static boolean insertStudent(Student student) {
        try {
            //1,得到dataSource對象,
            DataSource dataSource = DBCPUtils.getDataSource();
            //2,得到QueryRunner對象
            QueryRunner queryRunner = new QueryRunner(dataSource);
            //3,執行插入操作sql
            queryRunner.update("insert into student (name,age) values(?,?)", student.getName(), student.getAge());
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章