jdbc學習 5 資料庫連線池

2021-10-07 18:00:18 字數 3078 閱讀 2381

這種模式開發存在的問題:

對於每一次資料庫連線,使用完都得斷開,如果程式異常未能關閉,也可能導致記憶體洩漏,最終導致重啟資料庫

這種開發不能控制被建立的連線物件數,系統資源將毫無顧忌的分配出去,如果連線過多,也可能導致記憶體洩漏(物件不能被**,一直占用系統資源),伺服器崩潰

datasource:資料來源,包含連線池和連線池管理兩部分,用來取代drivermanager獲取連線,獲取速度快,同時可以大幅度提供商資料庫訪問速度

c3p0

初體驗:

@test

public

void

test1()

throws exception

使用配置檔案:

@test

public

void

test2()

throws exception

配置檔案示例:

<

?xml version=

"1.0" encoding=

"utf-8"

?>

<

!-- 這是預設配置資訊 --

>

<

default

-config>

<

!-- 連線四大引數配置 --

>

"jdbcurl"

>jdbc:mysql:

//localhost:

3306

/test?usessl=

false

&servertimezone=utc&allowpublickeyretrieval=

true

&rewritebatchedstatements=

true

<

/property>

"driverclass"

>com.mysql.cj.jdbc.driver<

/property>

"user"

>root<

/property>

"password"

>

123456

<

/property>

<

!-- 池引數配置 --

>

"acquireincrement"

>

3<

/property>

"initialpoolsize"

>

10<

/property>

"minpoolsize"

>

2<

/property>

"maxpoolsize"

>

10<

/property>

<

/default

-config>

<

!-- 專門為oracle提供的配置資訊 --

>

"oracle-config"

>

<

!-- 連線四大引數配置 --

>

"jdbcurl"

>jdbc:mysql:

//localhost:

3306

/test?usessl=

false

&servertimezone=utc&allowpublickeyretrieval=

true

&rewritebatchedstatements=

true

<

/property>

"driverclass"

>com.mysql.cj.jdbc.driver<

/property>

"user"

>root<

/property>

"password"

>

123456

<

/property>

<

!-- 池引數配置 --

>

"acquireincrement"

>

3<

/property>

"initialpoolsize"

>

10<

/property>

"minpoolsize"

>

2<

/property>

"maxpoolsize"

>

10<

/property>

<

/named-config>

<

/c3p0-config>

dbcp2

初體驗:

@test

public

void

test1()

throws exception

使用配置檔案:

@test

public

void

test2()

throws exception

配置檔案示例:

driverclassname=com.mysql.cj.jdbc.driver

username=root

password=

123456

url=jdbc:mysql:

//localhost:

3306

/test?usessl=

false

&servertimezone=utc&allowpublickeyretrieval=

true

&rewritebatchedstatements=

true

druid(德魯伊)資料庫連線池

druid可以說是目前最好的連線池了,也是我們最常用的.

配合配置檔案使用:

@test

public

void

test1()

throws exception

JDBC 資料庫連線池

資料庫連線池原理 傳統方式 當有多個執行緒,每個執行緒都需要連線資料庫執行sql語句的話,那麼每個執行緒都會建立乙個連線,並且在使用完畢後,關閉連線。建立連線和關閉連線的過程也是比較消耗時間的,當多執行緒併發的時候,系統就會變得很卡頓。同時,乙個資料庫同時支援的連線總數也是有限的,如果多執行緒併發量...

JDBC資料庫連線池

為了從本質上理解資料庫連線池的實現原理,可以自定義實現乙個連線池。本連線池只是簡單的實現了連線池的取得連線的功能,並為其新增了歸還連線的方法,其他方法均未實現。public class mybdcp implements datasource catch classnotfoundexception...

JDBC 資料庫連線池筆記

池化技術 準備一些預先的資源,過來就連線預先準備好的 1 最小連線數 如果常用的連線數是10的話,那最小連線數一般也設定為10。2 最大連線數 業務最高承載上限 不是併發?超過了最大連線數就排隊等待。3 等待超時 如果排隊時間超過某個值,就不再等待。編寫連線池,實現乙個資料來源介面datasourc...