Используйте пул соединений, который отнимет большую часть затрат на закрытие / открытие соединений.При использовании пула соединений закрытие соединения возвращает его в пул соединений для повторного использования.
Основная схема использования:
try (Connection connection = dataSource.getConnection()) {
// use connection
}
В конце блока соединение имеет видзакрыт, что - если dataSource
имеет пул соединений - сделает его доступным для повторного использования.