c3p0 は、 PreparedStatement
オブジェクトのキャッシュと再利用をサポートする、成熟した同時実行性の高い JDBC 接続プーリング ライブラリです。
c3p0 は、Maven Central の管理依存関係として利用できます。 [groupId: com.mchange, artifactId: c3p0]
利用可能なバージョンについては、ここを参照してください。
詳細についてはドキュメントを参照してください。
現在の開発スナップショットからの最新の CHANGELOG は次のとおりです。
コメントや質問はライブラリの作者に宛ててください。
ただし、彼はひどい特派員であり、基本的に嫌いな人であることを覚えておいてください。
それにもかかわらず、皆様からのフィードバックは大変ありがたく思っております。プルリクエストはありがたく受け付けます。問題を開くこともできます。
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
raw はライブラリ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 に、それぞれ 1000 回のデータベース操作を実行する 100 個のスレッドの負荷をかけ、終了します。
$ mill test.c3p0PSLoad
これにより、c3p0 はデータベース操作を無限に実行する 100 スレッドの負荷にさらされます。データベース操作にPreparedStatement
使用するため、ステートメント キャッシュを実行する良い方法です。
c3p0 は最初のConnection
チェックアウト試行時に情報をINFO
に記録するため、テスト時に c3p0 DataSource
の構成 (ほとんど) を観察できます。テストするときは、予想どおりの構成で作業していることを確認してください。
テストは、コマンドライン引数および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 のCentral Security Projectを介したセキュリティ脆弱性の報告に関して豊富な経験を持っています。 c3p0 のセキュリティ問題を見つけた場合は、https://hackerone.com/central-security-project 経由で報告することを検討してください。