高效的编码方式Java ResultSet

Efficient Way of Coding Java ResultSet

我有大约 40 个 Web 服务,对于每个服务,我都有以下代码从数据库中获取结果。最多,我只从数据库中检索大约 200 行,比这少很多倍。但是,一位开发人员告诉我,这段代码效率不高,尤其是 getColumnName 方法,它很昂贵。我只是想我会使用 getColumnName 作为键,因为它是描述性的。有没有更有效的方法来做下面同样的事情?如果是这样,我怎样才能使它更有效率?我应该研究任何设计模式以使其变得更好吗?提前致谢。

 try{
       ...
        //Open Db Connection
       ...
        ResultSet rs = stmt.executeQuery(QueryClass.getQuery());
        ResultSetMetaData rsmd = rs.getMetaData();
        int columnCount = rsmd.getColumnCount();

        while(rs.next()){
         HashMap<String, Object> map = new HashMap<String, Object>(columnCount);
          for (int i = 1; i <= columnCount; i++ ) {
            map.put(rsmd.getColumnName(i), rsmd.getObject(i));

        }

        //add to arraylist
        list.add(map);
        }
} catch(SQLException e){
  .....

}

如果您没有发现性能问题,那么真的没有必要仅出于效率原因更改您的代码。如果您使用的结构对您有意义,那么您应该坚持使用它。

您可能还需要考虑其他几个选项:

  1. 有一个单独的列名列表,你只存储一次:

    List<String> columnNames;

    List<List<Object>> rowData;

  2. 按列而不是按行记录数据:

    Map<String, List<Object>> columnData;

  3. 通过定义可以使用适合 table 的方法实现的接口来封装查询,允许您在遇到性能问题时更改实现而不更改接口。

例如:

public interface Table {
    List<String> getColumnNames();
    Object getValue(String column, int row);
}