java – Spring JDBC支持和大型数据集

栏目: Java · 发布时间: 7年前

内容简介:当使用各种JDBC模板方法之一时,我对如何迭代/滚动大型结果集(这不适合内存)感到困惑.即使没有直接暴露的Iterable接口,我至少会期待RowCallbackHandler的实例被调用,而查询执行完成后(或堆overfloats).我确实看到了一个数据库是Oracle10g.我正在使用11.1.0.7.0生产驱动程序和Spring 2.5.6.SEC01.任何想法任何人如何迭代结果集,最好保持RowMapper的映射逻辑等?

当使用各种JDBC模板方法之一时,我对如何迭代/滚动大型结果集(这不适合内存)感到困惑.即使没有直接暴露的Iterable接口,我至少会期待RowCallbackHandler的实例被调用,而查询执行完成后(或堆overfloats).

我确实看到了一个 this (尽管在精神上相当于 this post 堆栈溢出),还有在 this 在春季论坛上的帖子.后者似乎建议在光标提取数据时确实调用回调处理程序.但是我的测试显示没有这样的行为.

数据库是Oracle10g.我正在使用11.1.0.7.0生产驱动程序和Spring 2.5.6.SEC01.任何想法任何人如何迭代结果集,最好保持RowMapper的映射逻辑等?

Oracle JDBC驱动程序对java.sql.Statement上的setFetchSize()方法有适当的支持,可以让您一次性控制驱动程序获取的行数.

然而,Spring使用的RowMapper通过将每行读入内存来获取RowMapper将其转换为对象,并将每行的对象存储在一个大列表中.如果您的结果集是巨大的,那么这个列表会变大,不管JDBC如何读取行数据.

如果需要处理大型结果集,则RowMapper不可扩展.您可以考虑使用RowCallbackHandler,以及JdbcTemplate上的相应方法. RowCallbackHandler不会决定结果的存储方式,留给您保存.

http://stackoverflow.com/questions/1341254/spring-jdbc-support-and-large-dataset


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning ARKit for iPhone and iPad

Beginning ARKit for iPhone and iPad

Wallace Wang / Apress / 2018-11-5 / USD 39.99

Explore how to use ARKit to create iOS apps and learn the basics of augmented reality while diving into ARKit specific topics. This book reveals how augmented reality allows you to view the screen on ......一起来看看 《Beginning ARKit for iPhone and iPad》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具