commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Julien Aymé (JIRA) <j...@apache.org>
Subject [jira] Created: (DBUTILS-37) BeanListHandler#handle(ResultSet) is not optimal
Date Wed, 09 May 2007 10:52:15 GMT
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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message