Bei der Arbeit mit Datenbanken ist es oft notwendig, Daten abzurufen und in unseren Anwendungen zu bearbeiten. Eine Möglichkeit hierfür ist die Verwendung eines ResultSets, das Zugriff auf die Ergebnisse der Datenbank ermöglicht. Die direkte Rückgabe eines ResultSet kann jedoch bestimmte Einschränkungen haben.
Im bereitgestellten Code:
public ResultSet select() { ... return rs; }
Die Methode versucht, eine ResultSet-Referenz zurückzugeben. Dieser Ansatz kann jedoch zu Ressourcenverlustproblemen führen, da er die Anweisung und Verbindung offen hält und so deren vorzeitige Veröffentlichung verhindert.
Um diese Einschränkungen zu überwinden, ist ein besserer Ansatz erforderlich besteht darin, das ResultSet einer Sammlung von JavaBeans zuzuordnen, die dann als Liste zurückgegeben werden kann. Diese Methode stellt sicher, dass die Datenbankressourcen ordnungsgemäß geschlossen werden, und verhindert Ressourcenlecks.
Hier ist ein überarbeiteter Code, der diesen Ansatz implementiert:
public List<Biler> list() throws SQLException { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet = null; List<Biler> bilers = new ArrayList<>(); try { connection = database.getConnection(); statement = connection.prepareStatement("SELECT id, name, value FROM Biler"); resultSet = statement.executeQuery(); while (resultSet.next()) { Biler biler = new Biler(); biler.setId(resultSet.getLong("id")); biler.setName(resultSet.getString("name")); biler.setValue(resultSet.getInt("value")); bilers.add(biler); } } finally { if (resultSet != null) try { resultSet.close(); } catch (SQLException ignore) {} if (statement != null) try { statement.close(); } catch (SQLException ignore) {} if (connection != null) try { connection.close(); } catch (SQLException ignore) {} } return bilers; }
Diese überarbeitete Methode gibt eine Liste von Biler-Objekten zurück, die kann dann von der Anwendung manipuliert werden, ohne dass Bedenken hinsichtlich des Ressourcenverlusts auftreten, die mit der direkten Rückgabe eines ResultSet verbunden sind.
Zusätzlich zu dem oben beschriebenen Ansatz enthält der überarbeitete Code auch einige Verbesserungen:
Durch die Übernahme dieser Vorgehensweisen werden Ihre Datenbankinteraktionen robuster, wartbarer und leistungsfähiger.
Das obige ist der detaillierte Inhalt vonWarum ist die direkte Rückgabe eines ResultSets aus einer Datenbankabfrage eine schlechte Idee?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!