c3p0 adalah pustaka pengumpulan Koneksi JDBC yang matang dan sangat bersamaan, dengan dukungan untuk caching dan penggunaan kembali objek PreparedStatement
.
c3p0 tersedia sebagai ketergantungan terkelola di Maven Central, [groupId: com.mchange, artifactId: c3p0]
Untuk versi yang tersedia, lihat di sini.
Silakan lihat dokumentasi untuk lebih lanjut.
Dari cuplikan perkembangan saat ini, inilah CHANGELOG terbaru.
Silakan sampaikan komentar dan pertanyaan kepada penulis perpustakaan.
Namun, harap diingat bahwa dia adalah koresponden yang buruk dan pada dasarnya brengsek.
Meskipun begitu, tanggapan Anda sangat kami hargai. Permintaan tarik diterima dengan senang hati. Anda juga dapat membuka terbitan.
Terima kasih atas minat Anda pada c3p0. Saya harap ini bermanfaat bagi Anda!
Untuk saat ini (v0.10.1), c3p0 dibangun di bawah VM Java 11, menargetkan file kelas JDK 7 untuk kompatibilitas berkelanjutan dengan aplikasi lama.
Untuk mengingatkan saya untuk beralih ke Java 11, build akan gagal dengan Pengecualian jika mendeteksi versi yang tidak terduga.
Anda dapat mengomentari persyaratan ini dari build.sc
jika Anda mau. Seperti itulah garisnya
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 mengandalkan mill
alat build yang sangat baik.
Instal mill
. Kemudian, di dalam direktori repositori ini, jalankan
$ mill jar
Anda akan menemukan yang mentah sebagai perpustakaan out/jar.dest/out.jar
.
Jika Anda memelihara repositori ivy lokal, Anda dapat publishVersion
di build.sc
, lalu jalankan
$ mill publishLocal
Untuk membangun dokumentasi
$ mill doc.docroot
Anda kemudian dapat membuka di browser Anda out/doc/docroot.dest/index.html
Secara default, pengujian mengharapkan untuk menemukan database di jdbc:postgresql://localhost:5432/c3p0
. Seperti yang Anda lihat, saya biasanya mengujinya dengan database postgres lokal. Anda dapat mengubahnya di fungsi forkArgs
build.sc
.
pengujian c3p0, um, sangat informal. Ada rangkaian pengujian junit, tetapi mencakup sebagian kecil dari fungsionalitas c3p0. Untuk menjalankannya, itu saja
$ mill test.test
Sebagian besar c3p0 diuji dengan menjalankan beberapa aplikasi pengujian, dan memvariasikan konfigurasi ad hoc untuk melihat cara kerjanya.
Jika menurut Anda c3p0 dapat/harus diuji secara lebih profesional dan otomatis, saya juga! Saya ingin permintaan tarik.
build.sc
berisi banyak aplikasi pengujian, tetapi yang paling penting adalah
$ mill test.c3p0Benchmark
Ini adalah c3p0 yang paling dasar, umum, uji coba pertama. Ini menjalankan dan mengatur waktu banyak operasi c3p0 yang berbeda, dan menempatkan perpustakaan melalui latihan yang cukup bagus
$ mill test.c3p0Load
Yang ini menempatkan c3p0 di bawah beban 100 thread yang masing-masing melakukan 1000 operasi database, lalu berakhir.
$ mill test.c3p0PSLoad
Yang ini menempatkan c3p0 di bawah beban 100 thread yang melakukan operasi database tanpa batas. Ia menggunakan PreparedStatement
untuk operasi basis datanya, sehingga merupakan cara yang baik untuk menggunakan cache pernyataan.
Anda dapat mengamati (sebagian besar) konfigurasi DataSource
c3p0 Anda saat menguji, karena c3p0 mencatatnya di INFO
pada upaya checkout Connection
pertama. Saat menguji, verifikasi bahwa Anda bekerja dengan konfigurasi yang Anda harapkan!
Pengujian dikonfigurasikan dengan argumen baris perintah dan dengan file c3p0.properties
. Untuk bermain dengan konfigurasi berbeda, edit test/resources-local/c3p0.properties
. Periksa juga metode forkArgs()
di build.sc
Terkadang Anda ingin membuat perpustakaan berjalan sesuai dengan konfigurasi patologis. Konfigurasi patologis dasar didefinisikan dalam test/resources-local-rough/c3p0.properties
.
Untuk memberikan efek ini, edit sementara build.sc
:
override def runClasspath : T [ Seq [ PathRef ]] = T {
super .runClasspath() ++ localResources()
// super.runClasspath() ++ localResourcesRough()
}
super.runClasspath() ++ localResources()
super.runClasspath() ++ localResourcesRough()
Kemudian tentu saja Anda dapat mengedit test/resources-local-rough/c3p0.properties
.
Seringkali Anda ingin fokus login pada kelas atau fitur yang Anda uji. Secara default, pengujian c3p0 dikonfigurasi untuk menggunakan java.util.logging.
, dan dikonfigurasikan oleh file test/conf-logging/logging.properties
.
Tentu saja Anda dapat mengubah konfigurasi (dalam c3p0.properties
) untuk menggunakan pustaka logging lain jika Anda mau, namun Anda mungkin perlu memodifikasi build untuk memasukkan pustaka logging pihak ketiga, dan mengonfigurasi pustaka tersebut dengan caranya sendiri.
Karena c3p0 saat ini dibangun di bawah Java 11, tetapi c3p0-loom memerlukan Java 21, c3p0 loom adalah proyek terpisah.
Ini hanyalah proyek pabrik paralel. Petunjuk di atas berlaku (kecuali c3p0-loom
tidak memiliki dokumentasi independen untuk dibuat).
c3p0 dilisensikan dengan LGPL v.2.1 atau EPL v.1.0, sesuai pilihan Anda. Anda juga dapat memilih untuk melisensikan c3p0 pada versi LGPL apa pun yang lebih tinggi dari v.2.1.
Catatan: c3p0 memiliki pengalaman yang baik dalam melaporkan kerentanan keamanan melalui Proyek Keamanan Pusat Sonatype. Jika Anda menemukan masalah keamanan c3p0, pertimbangkan untuk melaporkannya melalui https://hackerone.com/central-security-project