Лучший класс компонента источника данных JDBC

Я вижу, что некоторые люди используют org.apache.commons.dbcp.BasicDataSource в то время как другие конфигурации имеют com.mchange.v2.c3p0.ComboPooledDataSource.

Spring имеет свое собственное: org.springframework.jdbc.datasource.DriverManagerDataSource

Существуют, вероятно, еще больше. Но какой является лучшим? У меня есть JPA/Hibernate три приложения уровня, для которых нужна организация пула подключений, но похоже что вся поддержка это....

8
задан HDave 6 June 2010 в 21:53
поделиться

1 ответ

Spring имеет свой собственный: org.springframework.jdbc.datasource.DriverManagerDataSource

Класс org.springframework.jdbc.datasource.DriverManagerDataSource реализует интерфейс DataSource , но НЕ пул соединений, это просто удобный класс, который можно использовать во время разработки вместо реального пула (но он создает новое соединение при каждом вызове). Предлагаю прочитать его javadoc .

У меня есть трехуровневое приложение JPA / Hibernate, которому требуется пул соединений, но похоже, что все это поддерживают ....

Если вы используете сервер приложений, отдавайте предпочтение пулу соединений вашего сервера приложений.

Если это не так, то наиболее распространенными решениями являются DBCP, C3P0. Я использовал бы C3P0 (который теперь фактически связан с Hibernate вместо DBCP). Я столкнулся с некоторыми проблемами взаимоблокировки с DBPC при высокой нагрузке, а не с C3P0, поэтому я предпочитаю C3P0.

Возможно, стоит отметить, что DBCP был воскрешен совсем недавно после очень длительного периода бездействия (в то время как C3P0 неактивен) и, таким образом, может стать лучше.

Другие проигрыватели включают Proxool и BoneCP (недавний новый конкурент). Последнее выглядит интересно, но у меня нет практического опыта с ним.

В любом случае, вы должны обычно запускать тесты устойчивости перед запуском в производственную среду.

См. Также

12
ответ дан 5 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: