JDBC和資料庫的連線池

2021-10-09 19:26:49 字數 1664 閱讀 1289

1載入jdbc驅動程式

2定義請求的url位址

3建立連線

4建立statement物件

5執行查詢或者更新

6結果處理

7關閉連線

1、註冊資料庫驅動:驅動程式實現了jdbc 定義的api介面和資料庫伺服器之間的互動功能

2 資料庫的url

單元測試:是一種不用建立類,不用main方法,也不用建立例項就可以使用的方法。

加@test 註解,通過junit框架呼叫該方法。程式的底部會建立該方法所在類的例項,並通過例項呼叫該方法

滿足單元測試的條件:1方法必須是公共的

2方法是非靜態的

3方法是沒有返回值的

4方法是沒有引數的

5 方法所在的類或方法名不能用test命名

1 匯入資料庫連線池的開發包

2 建立資料庫連線池的物件

3 設定連線資料庫的基本資訊

三種方式:1)直接將引數通過pool.set方法設定給連線池

2)將連線的引數提取到properties檔案中

這個檔案必須放在src原始碼根目錄下

檔名必須是c3p0.properties

3) 將連線的引數提取到xml檔案中

檔案必須放在src原始碼根目錄下

檔名必須是c3p0-config.xml

4從連線池獲取乙個連線物件

5用完連線後,將連線返回給連線池

如果是自己建立的連線物件,這個連線物件在呼叫close方法時,直接將連線物件關閉

如果是從連線池中獲取的連線物件,這個物件被連線池改變了,執行close方法時,是將連線返回到連線池中

事務處理:在更新資料庫時,預設情況下,這種修改是永久的寫入到資料庫的,但是這種預設行為可以通過編寫程式來改變。如果更新的過程**現錯誤,則進行資料庫的回滾,將資料庫還原到開始的值,如果更新完成,則將改變永遠地提交給資料庫。這種方式稱為事物處理。

事務的概念:單個邏輯工作單元執行的一系列操作,要麼全都執行,要麼全都不執行

特性:1原子性:事務的操作要麼都做,要麼全都不做

2一致性:事務的執行結果必須是資料庫從乙個一致性的狀態轉換到另乙個一致性的狀態

3隔離性:事務的執行不能被其他事務干擾

4永續性:事務一旦提交,它對資料庫的改變應該是永久的

三個讀問題:1髒讀:事務讀取了其他事物未提交的資料

2不可重複讀:事務對同一記錄的2次讀取的結果不同,因為其他事務對錶進行了修改

3幻讀:事務對同一張表的2次查詢的結果不同,因為其他事務對錶進行了修改(一般指增加了記錄)

兩個更新丟失問題:1。事務a在撤銷時,將事務b的結果覆蓋

2.事務a在提交時,將事務b的結果覆蓋

1 seriazable

序列化:不會出現任何的併發問題,因為他對記錄的訪問是序列的,並非併發訪問

2 repeatable read

可以處理髒讀和不可重複讀,但不能解決幻讀,效能比seriazable好

3 read committed

可以處理髒讀,但是不能解決不可重複讀和幻讀,效能比repeatable read好

4 read uncommitted

對資料不做任何處理,可能出現任何的併發問題,效能最好

JDBC和資料庫連線池

jdbc是大家都很熟悉的一門技術,在這就不過多闡述原理,直接上 便於運用時檢視 jdbc使用的幾個步驟 1 載入並註冊資料庫驅動 drivermanager.registerdriver driver driver 或者 class.forname drivername 2 獲取資料庫連線 conn...

JDBC 資料庫連線池

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

JDBC資料庫連線池

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