Heim >Datenbank >MySQL-Tutorial >Sollte ich gepoolte JDBC-Verbindungen schließen?
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:
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!