ホームページ >データベース >mysql チュートリアル >データベース クエリから直接 ResultSet を返すのはなぜ悪い考えなのでしょうか?
public ResultSet select() { ... return rs; }メソッドは、ResultSet 参照を返そうとします。ただし、このアプローチでは、ステートメントと接続を開いたままにし、早期のリリースを妨げるため、リソース リークの問題が発生する可能性があります。代替アプローチ: JavaBeans へのマッピングこれらの制限を克服するには、より良いアプローチが必要です。 ResultSet を JavaBeans のコレクションにマップし、リストとして返すことができます。このメソッドにより、データベース リソースが適切に閉じられ、リソース リークが防止されます。このアプローチを実装する改訂されたコードは次のとおりです。
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; }この改訂されたメソッドは、Biler オブジェクトのリストを返します。これにより、ResultSet を直接返すことに伴うリソース漏洩の問題を気にすることなく、アプリケーションで操作できるようになります。注目に値します。改善点上記のアプローチに加えて、改訂されたコードには次のいくつかの改善点も含まれています。
以上がデータベース クエリから直接 ResultSet を返すのはなぜ悪い考えなのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。