Heim >Java >javaLernprogramm >Muss ich ResultSets und Anweisungen schließen, bevor ich eine Verbindung in JDBC schließe?
JDBC Best Practices: Geschlossene Reihenfolge von ResultSets, Anweisungen und Verbindungen
Für eine optimale Datenbankleistung ist die Einhaltung einer ordnungsgemäßen JDBC-Ressourcenverwaltung von entscheidender Bedeutung . Während im Allgemeinen das Schließen der Verbindung nach der Verwendung empfohlen wird, stellt sich häufig die Frage, ob ResultSets und Statements separat geschlossen werden müssen.
Frage:
Angesichts des folgenden Codeausschnitts: Ist es notwendig, das ResultSet und die Anweisung explizit zu schließen, bevor das geschlossen wird? Verbindung?
Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = // Retrieve connection stmt = conn.prepareStatement(// Some SQL); rs = stmt.executeQuery(); } catch(Exception e) { // Error Handling } finally { try { if (rs != null) rs.close(); } catch (Exception e) {}; try { if (stmt != null) stmt.close(); } catch (Exception e) {}; try { if (conn != null) conn.close(); } catch (Exception e) {}; }
Antwort:
Das von Ihnen bereitgestellte Codebeispiel zeigt eine einwandfreie Praxis. Das Schließen der Verbindung ist zwar wichtig, reicht aber nicht aus, um die Freigabe aller Ressourcen sicherzustellen.
Durch das Schließen der Verbindung werden ResultSets oder Statements nicht automatisch geschlossen. Wenn ein primitiver Datenbank-Pooling-Mechanismus verwendet wird und Connection.close() aufgerufen wird, wird die Verbindung an den Pool zurückgegeben, wobei nicht geschlossene ResultSets und Statements zurückbleiben. Dies kann zu Ressourcenlecks und potenziellen Problemen führen.
Daher ist es unbedingt erforderlich, ResultSets, Statements und Connections in der in Ihrem Code-Snippet angezeigten Reihenfolge zu schließen. Dies stellt die ordnungsgemäße Freigabe aller JDBC-Ressourcen sicher und verhindert Speicherlecks.
Das obige ist der detaillierte Inhalt vonMuss ich ResultSets und Anweisungen schließen, bevor ich eine Verbindung in JDBC schließe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!