Heim >Datenbank >MySQL-Tutorial >Sollte ich gepoolte JDBC-Verbindungen schließen?

Sollte ich gepoolte JDBC-Verbindungen schließen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-03 22:19:14954Durchsuche

Should I Close Pooled JDBC Connections?

Schließen von JDBC-Verbindungen im Pool

Frage: Sollten JDBC-Verbindungen geschlossen werden, wenn ein Verbindungspool verwendet wird? Wenn ja, wird dadurch nicht der Zweck des Poolings zunichte gemacht?

Antwort: Ja, gepoolte Verbindungen sollten geschlossen werden. Durch das Schließen einer gepoolten Verbindung wird die zugrunde liegende Verbindung wieder zum Pool freigegeben.

Der Verbindungspool verfolgt, welche Verbindungen verwendet werden und welche frei sind. Wenn eine Verbindung geschlossen wird, erkennt der Pool sie als zur Wiederverwendung verfügbar.

Frage: Ist die folgende Methode geeignet, um eine Verbindung aus dem Pool oder dem DriverManager zu erhalten?

public Connection getConnection(boolean pooledConnection) throws SQLException {
    if (pooledConnection) {
        if (ds == null) {
            try {
                ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/NamedInTomcat");
                return ds.getConnection();
            } catch (NamingException e) {
                e.printStackTrace();
            }
        }
        return (ds == null) ? getConnection(false) : ds.getConnection();
    }
    return DriverManager.getConnection("jdbc:mysql://..." + dbName, uName, pWord);
}

Antwort: Der Code wird nicht empfohlen. Die DataSource sollte einmalig beim Anwendungsstart statt in der Methode initialisiert werden. Darüber hinaus sind Synchronisierungs- und Nullprüfungen nicht erforderlich. Die Methode sollte die DataSource einfach einmal nachschlagen und konsistent Verbindungen von ihr zurückgeben.

Zusätzliche Überlegungen:

  • Schließen Sie JDBC-Ressourcen bei einem Versuch immer in umgekehrter Reihenfolge -with-resources-Anweisung oder im „finally“-Block.
  • Vermeiden Sie die Verwendung von DriverManager zum manuellen Herstellen von Verbindungen, wenn Sie eine Verbindung verwenden Pool.

Das obige ist der detaillierte Inhalt vonSollte ich gepoolte JDBC-Verbindungen schließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn