javadoc说:
请注意,此课程旨在提供便利而非高性能。为了获得最佳性能,请考虑使用自定义RowMapper。
在现实世界中它有多慢?
答案 0 :(得分:3)
使用反射调用方法可以让您从一开始就获得性能。在这种情况下,您将性能命中数乘以来自数据库的结果数。如果您的数据会增长并且您将经常查询它,请考虑使用ParameterizedRowMapper。
在过去,我不得不退出使用反射快乐的便利库,因为基准测试显示它将用户长达100毫秒的时间调整为大约3秒。
答案 1 :(得分:2)
我从未对它进行过基准测试,因为我从来没有发现它是一个特殊的瓶颈。不使用反射的自定义RowMapper会更快但我从来没有在我的应用程序中看到过值得担心的打击。如果你正在做一个性能极高的应用程序,那么它可能值得一看,但在大多数情况下,我认为便利性值得忽略不计。
查看基类的源代码AbstractBeanPropertyRowMapper表明,在第一次通过该映射器访问类之后,很多反射式代码都会被缓存。我无法想象有任何真正的性能问题。快速查看:http://www.java2s.com/Open-Source/Java-Document/J2EE/spring-framework-2.5/org/springframework/jdbc/core/AbstractBeanPropertyRowMapper.java.htm
答案 2 :(得分:2)
Custom row mapper:
186 ms (invocation count 224 (weird...))
ParameterizedBeanPropertyRowMapper:
1301 ms (invocation count 112)
从结果集中读取一行时,保存约 11毫秒。这意味着在读取100条记录时会保存1“虚拟”秒。将其与用户数量相乘,您就会明白这一点。 ParameterizedBeanPropertyRowMapper只能在客户端计算机(桌面应用程序)上运行的小型应用程序中有效使用。