Để thực hiện C3P0 theo cách tốt nhất, sau đó kiểm tra câu trả lời này
C3P0 :
Đối với ứng dụng doanh nghiệp, C3P0 là cách tiếp cận tốt nhất. C3P0 là một thư viện dễ sử dụng để tăng các trình điều khiển JDBC truyền thống (dựa trên DriverManager) với DataSource có thể liên kết với JNDI, bao gồm cả DataSource thực hiện Kết nối và khai báo câu lệnh, như được mô tả bởi phần mở rộng jdbc3 spec và jdbc2. C3P0 cũng xử lý mạnh mẽ việc ngắt kết nối DB và kết nối lại minh bạch trong sơ yếu lý lịch trong khi DBCP không bao giờ khôi phục các kết nối nếu liên kết được lấy ra từ bên dưới nó.
Vì vậy, đây là lý do tại sao c3p0 và các nhóm kết nối khác cũng đã chuẩn bị bộ đệm câu lệnh - nó cho phép mã ứng dụng tránh xử lý tất cả điều này. Các câu lệnh thường được lưu giữ trong một số nhóm LRU giới hạn, vì vậy các câu lệnh phổ biến sử dụng lại một thể hiện PreparedStatement.
Tệ hơn nữa là DBCP đã trả lại các đối tượng Kết nối cho ứng dụng mà giao thông cơ bản đã bị hỏng. Trường hợp sử dụng phổ biến cho c3p0 là thay thế nhóm kết nối DBCP tiêu chuẩn đi kèm với Apache Tomcat. Thông thường, một lập trình viên sẽ gặp phải tình huống trong đó các kết nối không được tái chế chính xác trong nhóm kết nối DBCP và c3p0 là sự thay thế có giá trị trong trường hợp này.
Trong các bản cập nhật hiện tại, C3P0 có một số tính năng tuyệt vời. những người được đưa ra dưới đây:
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setMinPoolSize();
dataSource.setMaxPoolSize();
dataSource.setMaxIdleTime();
dataSource.setMaxStatements();
dataSource.setMaxStatementsPerConnection();
dataSource.setMaxIdleTimeExcessConnections();
Ở đây, max và min poolsize xác định giới hạn của kết nối đó có nghĩa như thế nào tối thiểu và tối đa kết nối ứng dụng này sẽ mất. MaxIdleTime()
xác định khi nào nó sẽ giải phóng kết nối nhàn rỗi.
DBCP :
Cách tiếp cận này cũng tốt nhưng có một số nhược điểm như hết thời gian kết nối và thực hiện kết nối. C3P0 là tốt khi chúng tôi đang sử dụng các dự án mutithreading. Trong các dự án của chúng tôi, chúng tôi đã sử dụng đồng thời nhiều lần thực thi luồng bằng cách sử dụng DBCP, sau đó chúng tôi có thời gian chờ kết nối nếu chúng tôi sử dụng nhiều lần thực hiện luồng hơn. Vì vậy, chúng tôi đã đi với cấu hình c3p0. Tôi hoàn toàn không khuyến nghị DBCP, đặc biệt là việc vứt bỏ các kết nối ra khỏi nhóm khi DB biến mất, nó không thể kết nối lại khi DB quay trở lại và không thể tự động thêm các đối tượng kết nối vào hồ bơi (nó bị treo mãi mãi một bài viết Ổ cắm I / O JDBCconnect đọc)
Cảm ơn :)