In our current project, we found out that Hibernate uses the column-names in queries to retrieve data from the resultsets. Now this is usually not a problem (it debugs pretty good thank you very much), but it adds quite the overhead for our Oracle driver. About 50% or more of the time for retreiving objects (dehydrating them) is spent in finding the correct column.
We are using a pretty archaic version of Hibernate (3.1 something), and therefore I was looking at 3.2 to see if this has improved. I found the following todo comment in the dehydrate logic:
for ( int i = 0; i //TODO: this is kinda slow...</b> } }
Something tells me there is room for improvement.