หากต้องการใช้งาน C3P0 อย่างดีที่สุดให้ตรวจสอบคำตอบนี้
C3P0 :
สำหรับแอปพลิเคชันองค์กร C3P0 เป็นวิธีการที่ดีที่สุด C3P0 เป็นไลบรารีที่ใช้งานง่ายสำหรับการเพิ่มไดร์เวอร์ JDBC แบบดั้งเดิม (อิงตาม DriverManager) กับ JNDI-bindable DataSources รวมถึง DataSources ที่ใช้การเชื่อมต่อและ Statement Pooling ตามที่อธิบายโดยข้อมูลจำเพาะ jdbc3 และส่วนขยาย jdbc2 std C3P0 ยังจัดการการเชื่อมต่อฐานข้อมูลอย่างแน่นหนาและการเชื่อมต่อแบบโปร่งใสอีกครั้งเมื่อดำเนินการต่อในขณะที่ DBCP ไม่เคยกู้คืนการเชื่อมต่อหากลิงก์ถูกนำออกจากด้านล่าง
ดังนั้นนี่คือเหตุผลที่ c3p0 และกลุ่มการเชื่อมต่ออื่น ๆ ได้เตรียมคำสั่งแคชไว้ด้วยซึ่งจะช่วยให้รหัสแอปพลิเคชันหลีกเลี่ยงการจัดการทั้งหมดนี้ โดยปกติแล้วงบจะถูกเก็บไว้ในกลุ่ม LRU ที่ จำกัด ดังนั้นงบทั่วไปจึงนำมาใช้ซ้ำกับอินสแตนซ์ PreparedStatement
DBCP ยังส่งคืนออบเจ็กต์การเชื่อมต่อไปยังแอปพลิเคชันที่การส่งข้อมูลพื้นฐานเสียหาย กรณีการใช้งานทั่วไปสำหรับ c3p0 คือการแทนที่การรวมการเชื่อมต่อ DBCP มาตรฐานที่มาพร้อมกับ Apache Tomcat บ่อยครั้งที่โปรแกรมเมอร์จะทำงานในสถานการณ์ที่การเชื่อมต่อไม่ได้รีไซเคิลอย่างถูกต้องในกลุ่มการเชื่อมต่อ DBCP และ c3p0 เป็นสิ่งทดแทนที่มีค่าในกรณีนี้
ในการอัปเดตปัจจุบัน C3P0 มีคุณสมบัติที่ยอดเยี่ยมบางอย่าง เหล่านั้นจะได้รับร้อง:
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setMinPoolSize();
dataSource.setMaxPoolSize();
dataSource.setMaxIdleTime();
dataSource.setMaxStatements();
dataSource.setMaxStatementsPerConnection();
dataSource.setMaxIdleTimeExcessConnections();
ที่นี่maxizeและ min poolizeจะกำหนดขอบเขตของการเชื่อมต่อซึ่งหมายความว่าแอปพลิเคชันนี้จะใช้การเชื่อมต่อขั้นต่ำและสูงสุดอย่างไร MaxIdleTime()
กำหนดเมื่อมันจะปล่อยการเชื่อมต่อที่ไม่ได้ใช้งาน
DBCP :
วิธีนี้ยังดี แต่มีข้อบกพร่องบางอย่างเช่นการหมดเวลาการเชื่อมต่อและการเชื่อมต่อใหม่ C3P0 นั้นดีเมื่อเราใช้ mutithreading โปรเจค ในโครงการของเราเราใช้การประมวลผลหลายเธรดพร้อมกันโดยใช้ DBCP จากนั้นเราได้รับการหมดเวลาเชื่อมต่อหากเราใช้การประมวลผลเธรดมากขึ้น ดังนั้นเราจึงไปกับการกำหนดค่า c3p0 ฉันจะไม่แนะนำ DBCP เลยโดยเฉพาะอย่างยิ่งความสามารถในการโยนการเชื่อมต่อออกจากพูลเมื่อฐานข้อมูลหายไปความสามารถในการเชื่อมต่ออีกครั้งเมื่อฐานข้อมูลกลับมาและไม่สามารถเพิ่มวัตถุเชื่อมต่อกลับเข้าไปในกลุ่มได้ อ่านโพสต์ซ็อกเก็ต JDBCconnect I / O)
ขอบคุณ :)