Вопрос-ответ

How to establish a connection pool in JDBC?

Как установить пул подключений в JDBC?

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

При поиске в Google я вижу много разных способов сделать это, и это довольно запутанно.

В конечном итоге мне нужен код для возврата java.sql.Connection объекта, но у меня возникли проблемы с началом работы .. приветствуются любые предложения.

Обновление: Нет javax.sql или java.sql есть реализации объединенных подключений? Почему было бы не использовать их?

Переведено автоматически
Ответ 1

Если вам нужен автономный пул подключений, я предпочитаю C3P0, а не DBCP (о котором я упоминал в этом предыдущем ответе), у меня просто было слишком много проблем с DBCP при большой нагрузке. Использовать C3P0 предельно просто. Из документации:

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" );
cpds.setUser("swaldman");
cpds.setPassword("test-password");

// the settings below are optional -- c3p0 can work with defaults
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);

// The DataSource cpds is now a fully configured and usable pooled DataSource

Но если вы работаете внутри сервера приложений, я бы рекомендовал использовать встроенный пул подключений, который он предоставляет. В этом случае вам нужно будет настроить его (обратитесь к документации вашего сервера приложений) и получить источник данных через JNDI:

DataSource ds = (DataSource) new InitialContext().lookup("jdbc/myDS");
Ответ 2

HikariCP

Это современно, быстро и просто. Я использую его для каждого нового проекта. Я предпочитаю его C3P0, не слишком хорошо знаю другие пулы.

Ответ 3

Обычно, если вам нужен пул подключений, вы пишете приложение, которое запускается в некоторой управляемой среде, то есть вы работаете внутри сервера приложений. Если это так, обязательно проверьте, какие возможности пула подключений предоставляет ваш сервер приложений,прежде чем пробовать какие-либо другие варианты.

Готовое решение будет наилучшим образом интегрировано с остальными возможностями серверов приложений. Однако, если вы работаете не на сервере приложений, я бы порекомендовал компонент DBCP Apache Commons. Он широко используется и предоставляет все базовые функции объединения в пул, которые требуются большинству приложений.

Ответ 4

Не изобретайте велосипед заново.

Попробуйте один из легкодоступных компонентов сторонних производителей:


  • Apache DBCP - этот пул используется внутри Tomcat и вашим покорным слугой.

  • c3p0

Apache DBCP поставляется с другим примером настройки пула javax.sql.DataSource. Вот один пример, который может помочь вам начать.

java jdbc