将数据库游标查询结果临时存入硬盘,用哪种框架比较好

问题遇到的现象和发生背景

项目中出现一些查询数据库所得结果过多,容易导致OOM的场景。因而采用了mybatis游标查询的功能来批量获取结果。但游标不宜长时间保持开启,项目接受将结果以文件的形式临时存放在硬盘上。

我的解答思路和尝试过的方法

使用了JDK原生序列化方法,即ObjectInputStream/ObjectOutputStream,据说会有安全漏洞和性能不足。

我想要达到的结果
  1. 希望采用的框架不要求对代码有过多改动,例如为每个待序列化类型添加配置文件就不是很方便。
  2. 尽量不引用专门的开源代码,若有容易实现且泛用性强的,类似“分隔符分隔属性值,每一行代表一个对象”这种思路也是可以考虑的。
  3. 不需要考虑序列化的对象跨平台或网络传输场景,这里只是想方便地将对象存入磁盘并分批读取。

欢迎大家交流经验,非常感谢!

你可以考虑一下,既然都临时存到硬盘了,为什么不使用数据库本身来保存数据呢?难道自己写的比数据库更好用?因此更推荐的方式是进行分页查询,一次不要查询出太多的数据,否则不管数据存到哪里只要加载到内存还是会导致 OOM。

最后发现项目里有引入jackson csv,可以比较方便地序列化pojo