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]