BeanListHandler#handle(ResultSet) is not optimal
------------------------------------------------
Key: DBUTILS-37
URL: https://issues.apache.org/jira/browse/DBUTILS-37
Project: Commons DbUtils
Issue Type: Improvement
Reporter: Julien Aymé
Priority: Minor
I use the BeanListHandler for huge ResultSets (about 1000000 rows), and I
searched through the code to see if I could gain little time.
It appeared to me that the following code - in BeanProcessor.class - was
executed too many times:
PropertyDescriptor[] props = this.propertyDescriptors(type);
ResultSetMetaData rsmd = rs.getMetaData();
int[] columnToProperty = this.mapColumnsToProperties(rsmd, props);
for the following reason.
Since BeanListHandler extends GenericListHandler, the method #handle(ResultSet)
calls #handleRow(ResultSet) for each row in the ResultSet,
which in the case of a BeanListHandler, calls RowProcessor#toBean(ResultSet,
Class),
which itself calls BeanProcessor#toBean(ResultSet, Class).
A very simple way to make the BeanListHandler#handle(ResultSet) method faster
is to override the GenericListHandler#handle(ResultSet) method by this code:
public Object handle(ResultSet rs) throws SQLException {
return this.convert.toBeanList(rs, type);
}
This way, the code I showed would be called only once, as it would not call
BeanProcessor#toBean(ResultSet, Class) for each row but
BeanProcessor#toBeanList(ResultSet, Class).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]