c3p0 เป็นไลบรารีการรวมกลุ่ม JDBC Connection ที่มีความสมบูรณ์และทำงานพร้อมกันสูง พร้อมรองรับการแคชและการนำอ็อบเจ็กต์ PreparedStatement
มาใช้ซ้ำ
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
คุณจะพบไฟล์ดิบเป็นไลบรารี out/jar.dest/out.jar
หากคุณดูแลรักษาที่เก็บ ivy โลคัล คุณสามารถปรับแต่ง publishVersion
ใน build.sc
จากนั้นรัน
$ mill publishLocal
เพื่อสร้างเอกสาร
$ mill doc.docroot
จากนั้นคุณสามารถเปิดในเบราว์เซอร์ของคุณ out/doc/docroot.dest/index.html
ตามค่าเริ่มต้น การทดสอบคาดว่าจะค้นหาฐานข้อมูลที่ jdbc:postgresql://localhost:5432/c3p0
อย่างที่คุณเห็น ฉันมักจะทดสอบกับฐานข้อมูล postgres ในเครื่อง คุณสามารถเปลี่ยนสิ่งนี้ได้ในฟังก์ชัน forkArgs
ของ build.sc
การทดสอบของ c3p0 นั้น อืม ไม่เป็นทางการอย่างน่าเขินอาย มีชุดทดสอบ Junit แต่ครอบคลุมฟังก์ชัน c3p0 ส่วนเล็กๆ น้อยๆ ที่จะเรียกใช้มันก็เป็นเพียง
$ mill test.test
c3p0 ส่วนใหญ่ได้รับการทดสอบโดยการรันแอปพลิเคชันทดสอบสองสามตัว และการกำหนดค่า เฉพาะกิจ ที่แตกต่างกันเพื่อดูว่าสิ่งต่างๆ ทำงานอย่างไร
หากคุณคิดว่า c3p0 สามารถ/ควรได้รับการทดสอบอย่างมืออาชีพและอัตโนมัติมากขึ้น ฉันก็เช่นกัน! ฉันชอบคำขอดึง
build.sc
มีแอปพลิเคชั่นทดสอบมากมาย แต่ที่สำคัญที่สุดคือ
$ mill test.c3p0Benchmark
นี่คือ c3p0 ที่เป็นพื้นฐานที่สุด ทั่วไป และเป็นการทดสอบครั้งแรกของรีสอร์ท มันดำเนินการและคูณการดำเนินการ c3p0 ต่างๆ มากมาย และทำให้ห้องสมุดมีแบบฝึกหัดที่ดีทีเดียว
$ mill test.c3p0Load
อันนี้ทำให้ c3p0 อยู่ภายใต้การโหลด 100 เธรดซึ่งดำเนินการกับฐานข้อมูล 1,000 รายการในแต่ละครั้ง จากนั้นยุติลง
$ mill test.c3p0PSLoad
อันนี้ทำให้ c3p0 อยู่ภายใต้การโหลดของ 100 เธรดที่ดำเนินการฐานข้อมูลอย่างไม่มีกำหนด โดยจะใช้ PreparedStatement
สำหรับการดำเนินงานฐานข้อมูล ดังนั้นจึงเป็นวิธีที่ดีในการใช้แคชคำสั่ง
คุณสามารถสังเกต (ส่วนใหญ่) การกำหนดค่าของ DataSource
c3p0 ของคุณเมื่อคุณทดสอบ เนื่องจาก c3p0 บันทึกไว้ที่ INFO
เมื่อพยายามชำระเงิน Connection
ต่อครั้งแรก เมื่อทำการทดสอบ ให้ตรวจสอบว่าคุณกำลังทำงานกับการกำหนดค่าที่คุณคาดหวัง!
การทดสอบได้รับการกำหนดค่าโดยอาร์กิวเมนต์บรรทัดคำสั่งและโดยไฟล์ c3p0.properties
หากต้องการเล่นกับการกำหนดค่าที่แตกต่างกัน ให้แก้ไข test/resources-local/c3p0.properties
ตรวจสอบเมธอด forkArgs()
ใน build.sc
ด้วย
บางครั้งคุณต้องการทำให้ห้องสมุดมีรูปแบบทางพยาธิวิทยา การกำหนดค่าทางพยาธิวิทยาพื้นฐานถูกกำหนดไว้ใน 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 ตามตัวเลือกของคุณ คุณยังอาจเลือกใช้ใบอนุญาต c3p0 ภายใต้ LGPL เวอร์ชันใดก็ได้ที่สูงกว่า v.2.1
หมายเหตุ: c3p0 มีประสบการณ์ที่ดีในการรายงานช่องโหว่ด้านความปลอดภัยผ่าน Central Security Project ของ Sonatype หากคุณพบปัญหาด้านความปลอดภัย c3p0 โปรดรายงานผ่าน https://hackerone.com/central-security-project