Вы должны рассмотреть возможность введения пула соединений.
В мире Java вы обычно получаете это «бесплатно» с сервером приложений. Однако в любом случае это будет слишком много, если все, что вам нужно, это пул соединений с базой данных.
Общая идея состоит в том, чтобы один процесс (на сервере) открывал ограниченное количество параллельных подключений к базе данных. Вы бы делали это в каком-то «прокси» -приложении (своего рода мини-сервере приложений) и повторно использовали бы дорогое создание соединений с базой данных для входящих соединений с вашим приложением, которые дешевле создавать и выбрасывать.
Конечно, это требует некоторых изменений и на стороне клиента, поэтому, возможно, это не идеальное решение, если вы не можете принять это как предварительное условие.