c3p0是一個成熟的、高並發的JDBC連線池庫,支援PreparedStatement
物件的快取和重複使用。
c3p0 可作為 Maven Central 上的託管依賴項使用, [groupId: com.mchange, artifactId: c3p0]
有關可用版本,請查看此處。
請參閱文件以了解更多資訊。
從目前的開發快照來看,這是最新的變更日誌。
請向庫作者提出意見和問題。
然而,請記住,他是一個糟糕的記者,基本上是個混蛋。
儘管如此,我們還是非常感謝您的回饋。拉取請求被感激地接受。您也可以提出問題。
感謝您對 c3p0 的興趣。我衷心希望您覺得它有用!
目前(v0.10.1),c3p0 是在 Java 11 VM 下建構的,目標是 JDK 7 類文件,以繼續與舊版應用程式相容。
為了提醒我切換到 Java 11,如果偵測到意外版本,建置將會失敗並出現異常。
如果您願意,可以在build.sc
中註解掉此要求。這條線看起來像
require( sys.props( " java.runtime.version " ).startsWith( " 11 " ), s " Bad build JVM: ${sys.props( " java.runtime.version " )} -- We currently expect to build under Java 11. (We generate Java $JvmCompatVersion compatible source files.) " )
c3p0 依賴優秀的建置工具mill
。
安裝mill
。然後,在此存儲庫目錄中,運行
$ mill jar
您將找到原始庫out/jar.dest/out.jar
。
如果您維護本機ivy儲存庫,您可以在build.sc
中自訂publishVersion
,然後執行
$ mill publishLocal
建構文檔
$ mill doc.docroot
然後您可以在瀏覽器中開啟out/doc/docroot.dest/index.html
預設情況下,測試期望在jdbc:postgresql://localhost:5432/c3p0
找到資料庫。正如您所看到的,我通常會針對本地 postgres 資料庫進行測試。您可以在build.sc
的forkArgs
函數中更改此設定。
c3p0 的測試是,嗯,非正式的,令人尷尬。有一個 junit 測試套件,但它只涵蓋了 c3p0 功能的一小部分。要運行它,只需
$ mill test.test
大多數情況下,c3p0 是透過執行一些測試應用程式來測試的,並暫時改變配置來查看事情如何運作。
如果您認為 c3p0 可以/應該進行更專業、更自動化的測試,我也是!我想要一個拉取請求。
build.sc
包含許多測試應用程序,但最重要的是
$ mill test.c3p0Benchmark
這是c3p0 最基本、最常見、測試的第一手段。它運行並計時了一堆不同的 c3p0 操作,並使庫得到了很好的鍛煉
$ mill test.c3p0Load
此範例將 c3p0 置於 100 個執行緒的負載之下,每個執行緒執行 1000 個資料庫操作,然後終止。
$ mill test.c3p0PSLoad
這使得 c3p0 承受 100 個執行緒無限期執行資料庫操作的負載。它使用PreparedStatement
進行資料庫操作,因此是行使語句快取的好方法。
測試時,您可以觀察 c3p0 DataSource
的(大部分)配置,因為 c3p0 在第一次Connection
檢出嘗試時將其記錄在INFO
中。測試時,請驗證您是否正在使用您期望的配置!
測試透過命令列參數和c3p0.properties
檔案進行配置。若要使用不同的配置,請編輯test/resources-local/c3p0.properties
。也要檢查build.sc
中的forkArgs()
方法
有時您希望透過病態配置來測試庫的運作。基線病理配置在test/resources-local-rough/c3p0.properties
中定義。
若要實現此效果,請暫時編輯build.sc
:
override def runClasspath : T [ Seq [ PathRef ]] = T {
super .runClasspath() ++ localResources()
// super.runClasspath() ++ localResourcesRough()
}
super.runClasspath() ++ localResources()
super.runClasspath() ++ localResourcesRough()
中的註釋當然,您可以編輯test/resources-local-rough/c3p0.properties
。
通常,您會希望將日誌集中在您正在測試的類別或功能上。預設情況下,c3p0 測試配置為使用java.util.logging.
,並透過檔案test/conf-logging/logging.properties
進行設定。
當然,如果您願意,您可以更改配置(在c3p0.properties
中)以使用另一個日誌記錄庫,但您可能需要修改建置以引入第三方日誌記錄庫,並以它們自己的方式配置這些庫。
由於 c3p0 目前在 Java 11 下構建,但 c3p0-loom 需要 Java 21,因此 c3p0 loom 是一個單獨的專案。
這只是一個平行磨機專案。上述說明適用(除了c3p0-loom
沒有獨立的文檔可供建置)。
c3p0 依據 LGPL v.2.1 或 EPL v.1.0 進行許可,由您選擇。您也可以選擇在任何高於 v.2.1 的 LGPL 版本下授權 c3p0。
注意: c3p0 在透過 Sonatype 的中央安全專案報告安全漏洞方面擁有良好的經驗。如果您發現 c3p0 安全性問題,請考慮透過 https://hackerone.com/central-security-project 回報該問題