【发布时间】:2011-09-30 16:11:48
【问题描述】:
这是我的问题:在我的 Java 程序中,我使用 Spring 中的 SimpleJdbcTemplate 类从数据库中获得了一个(非常)大的事件列表。
List<Event> events =
this.simpleJdbcTemplate.query(myQuery,
myMapper(),
new Object[] {
filter.getFirst(),
filter.getSecond(),
filter.getThird()}
);
问题是该列表可能包含类似 600,000 个事件...因此使用大量内存(并且还需要时间来处理)。
但是,我真的不需要一次检索所有事件。实际上我希望能够遍历列表,只读取几个事件(链接到特定的 KEY_ID - sql 查询 myQuery 由 KEY_ID 排序),处理它们并最终返回迭代,让垃圾收集器摆脱以前的和已经处理的事件,这样我就不会超过一定的内存量。
有没有使用 Spring 库(或任何库)的好方法?
干杯, 瓦基姆沙尔。
【问题讨论】:
-
顺便说一句:使用 SimpleJdbcTemplate,您不必像所有相关方法 have vararg parameters 一样将参数包装在 Object 数组中。 (当然编译器在内部做同样的事情,但你的代码变得更具可读性)
标签: java sql spring jdbc spring-jdbc