Чтобы реализовать C3P0 наилучшим образом, проверьте этот ответ
C3P0 :
Для корпоративных приложений C3P0 является лучшим подходом. C3P0 - это простая в использовании библиотека для расширения традиционных (основанных на DriverManager) драйверов JDBC с помощью JNDI-связанных источников данных, включая источники данных, которые реализуют пул соединений и операторов, как описано в спецификации jdbc3 и расширении jdbc2 std. C3P0 также надежно обрабатывает разъединения БД и прозрачное повторное соединение при возобновлении, тогда как DBCP никогда не восстанавливал соединения, если ссылка была удалена из-под него.
Вот почему c3p0 и другие пулы соединений также подготовили кеши операторов - это позволяет коду приложения избегать всего этого. Операторы обычно хранятся в некотором ограниченном пуле LRU, поэтому общие операторы повторно используют экземпляр PreparedStatement.
Хуже того, DBCP возвращал объекты Connection приложению, для которого был нарушен базовый транспорт. Распространенным вариантом использования c3p0 является замена стандартного пула соединений DBCP, включенного в Apache Tomcat. Часто программист сталкивается с ситуацией, когда соединения неправильно перезаписываются в пуле соединений DBCP, и в этом случае c3p0 является ценной заменой.
В текущих обновлениях C3P0 имеет несколько блестящих функций. те даны ниже:
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setMinPoolSize();
dataSource.setMaxPoolSize();
dataSource.setMaxIdleTime();
dataSource.setMaxStatements();
dataSource.setMaxStatementsPerConnection();
dataSource.setMaxIdleTimeExcessConnections();
Здесь, максимальный и минимальный размер пула определяют границы соединения, что означает, какое минимальное и максимальное соединение будет принимать это приложение. MaxIdleTime()
определить, когда он освободит простое соединение.
DBCP :
Этот подход также хорош, но имеет некоторые недостатки, такие как время ожидания соединения и повторное освобождение соединения. C3P0 хорош, когда мы используем проекты с многопоточностью. В наших проектах мы использовали одновременное выполнение нескольких потоков с использованием DBCP, затем мы получили тайм-аут соединения, если мы использовали большее количество потоков. Итак, мы пошли с конфигурацией c3p0. Я бы вообще не рекомендовал DBCP, особенно это умение выбрасывать соединения из пула, когда БД уходит, его невозможность переподключения при возврате БД и его неспособность динамически добавлять объекты соединений обратно в пул (он навсегда зависает на пуле). сообщение JDBCconnect I / O сокет читать)
Спасибо :)