Я использую: JDBC, Apache Commons DBCP2
Я хочу сделать реализацию отправки и получения результата запроса в базу данных PostgreSQL в разных потоках, и для каждого потока будет отдельное соединение (Мой тариф хостинга базы данных поддерживает 5 соединений), но при попытке обработать, группу запросов, используется только одно соединение (я хочу задействовать все 5) и я никак не могу понять причину и как я могу задействовать все возможные соединения
public static BasicDataSource getConnection(SQL sql, BasicDataSource init) {
return new SessionFactory(api, init)
.setUrl()
.setUsername()
.setPassword()
.setMaxIdle(5)
.setInitialSize(5)
.build();
}
public Connection getConnection() {
if (this.sessions.isEmpty()) {
this.sessions.put(this.property.getUrl(), getConnection());
}
return this.sessions.get(this.api.getProperty().getUrl());
}
public class SessionCallable<K, V> implements Callable<String> {
private final SQL api;
private final K query;
private final V parameters;
public SessionCallable(SQL api, K query) {
this.api = api;
this.query = query;
}
@Override
public String call() {
return result(preparedStatement(this.query))
}
private PreparedStatement preparedStatement(String query) throws SQLException {
return this.api.getConnection().prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
}
}
private <K, V> Collection<String> collect(@NotNull DataObject<K, V> data) throws InterruptedException {
return this.api.getRateLimitPool().invokeAll(toCollection(data)).stream()
.map(this::get)
.toList();
}
private <K, V> Collection<SessionCallable<K,V>> toCollection(@NotNull DataObject<K, V> data) {
return data.thenApply((key, value) -> new SessionCallable<>(this.api, key, value)).toList();
}