我有大约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){
.....
}
答案 0 :(得分:0)
如果您没有看到性能问题,那么仅出于效率原因,无需更改代码。如果您使用的结构对您有意义,那么您应该坚持下去。
您可能还需要考虑其他一些选项:
有一个单独的列名列表,您可以存储一次:
List<String> columnNames;
List<List<Object>> rowData;
按列而不是按行记录数据:
Map<String, List<Object>> columnData;
通过定义可以使用适合于表的方法实现的接口来封装查询,如果遇到性能问题而无需更改接口,则可以更改实现。
例如:
public interface Table {
List<String> getColumnNames();
Object getValue(String column, int row);
}