... 2000 Datenbank Connections ist in jedem Fall nicht das, was man hier Java seitig macht, da gibt es kein vertun!
Wenn ich hundert(e) Clients habe, von denen jeder an die Datenbank verbindet, dann liegt der Fehler schon eins vorher; dann brauche ich einen Application Server, der EJBs (Enterprise Java Beans) unterstützt, verbinde meinen Client an diesen EJB Server und der verbindet über einen Connection Pool an die Datenbank meines Vertrauens. Dann kümmert sich der Pool um die Gesundheit der Connections und temporäre Zugriffspfade etc. werden auf Verbindungsebene gecached etc.
Noch mehr Nutzen bekomme ich, wenn ich ein ORM Framework (Hibernate oder ähnliches) verwende, dann werden auch häufig benutzte Daten automatisch gecached und ich kann konfigurieren welche Daten ich mit welcher Ladestrategie ziehen lasse, was Lesezugriffe entscheidend optimiert.

D*B