Чтобы реализовать 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();
Здесь max и min poolize определяют границы соединения, что означает, какое минимальное и максимальное соединение будет принимать это приложение. MaxIdleTime()
определить, когда он освободит простое соединение.
ДБХП :
Этот подход также хорош, но имеет некоторые недостатки, такие как время ожидания соединения и повторное освобождение соединения.
C3P0 хорош, когда мы используем проекты с многопоточностью. В наших проектах мы использовали одновременное выполнение нескольких потоков с использованием DBCP, затем мы получили тайм-аут соединения, если мы использовали большее количество потоков. Итак, мы пошли с конфигурацией c3p0.
Я бы вообще не рекомендовал DBCP, особенно это умение выбрасывать соединения из пула, когда БД уходит, невозможность переподключения при возврате БД и неспособность динамически добавлять объекты соединений обратно в пул (он навсегда зависает на пуле). чтение разъема ввода-вывода JDBCconnect)
Спасибо:)