Лучший класс bean-компонента источника данных JDBC - PullRequest
8 голосов
/ 07 июня 2010

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

Весна имеет свои: org.springframework.jdbc.datasource.DriverManagerDataSource

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

1 Ответ

12 голосов
/ 07 июня 2010

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 (недавний новый конкурент). Последнее выглядит интересно, но у меня нет никакого практического опыта с этим.

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

Смотри также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...