Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Grundlegende JDBC-Konzepte, Pooling und Threading

Connection-Pools schmücken Connection- und Statement-Instanzen mit ihren eigenen Wrapper-Implementierungen. Wenn Sie eine Verbindung schließen, geben Sie sie eigentlich nur an den Pool zurück. Wenn Sie close für eine vorbereitete Anweisung aufrufen, geben Sie sie eigentlich nur an den Anweisungscache der Verbindung zurück. Wenn Sie eine Anweisung vorbereiten, rufen Sie möglicherweise nur eine zwischengespeicherte Anweisungsinstanz von der Verbindung ab. All dies ist nicht sichtbar, sodass Sie sich keine Gedanken darüber machen müssen.

Wenn einem Client eine Verbindung gegeben wird, steht sie keinem anderen Client mehr zur Verwendung zur Verfügung, bis die Verbindung wieder für den Pool freigegeben wird. Sie holen Verbindungen im Allgemeinen nur dann ab, wenn Sie sie brauchen, und geben sie dann zurück, sobald Sie damit fertig sind. Da die Verbindungen im Pool offen gehalten werden, gibt es wenig Overhead beim Abrufen und Freigeben von Verbindungen.

Sie sollten eine Verbindung aus dem Pool genauso wie eine einzelne JBDC-Verbindung verwenden und die bewährten Verfahren zum Schließen von Ressourcen befolgen, damit keine Verbindungen oder Anweisungen verloren gehen. Sehen Sie sich die try/catch/finally-Beispiele in einigen der anderen Antworten an.

Pools können die Verbindungsressourcen verwalten und testen, bevor sie an Clients weitergegeben werden, um sicherzustellen, dass sie nicht veraltet sind. Außerdem erstellt und zerstört ein Pool nach Bedarf Verbindungen.