设计读取大量数据的DAO

时间:2018-05-18 02:38:38

标签: java hibernate dao

这可能是一个有点开放(和主观)的问题 - 但请耐心等待。

我有一个可能会加载大量数据的DAO - 这可能会导致OutOfMemoryExceptions。所有实体都是互斥的,可以同时处理 - 基本上,调用者不需要立即获取数据集。

我正在寻找一种方法将数据块返回给调用者(以避免DAO在内存中保存大量数据)。

到目前为止,我已经提出了两种可能的解决方案:

  1. 调用者提供了一个使用者(一个功能接口实现),DAO在读取大量数据时调用(超过阈值限制)。 DAO将数据传递给此使用者(在单独的线程中调用),清除它自己的数据副本并继续检索其余数据。

  2. 调用者和DAO共享一个BlockingQueue。 DAO将每个实体检索到队列中。调用者定期轮询队列中的这些数据 - 我不清楚如何干净地实现这一点。例如,何时停止轮询队列等(虽然不是道路拦截器)。

  3. 如果你和我待在一起,谢谢。请让我知道您的想法,以及是否有更好的解决方案。

    更新:

    我不倾向于使用分页。检索到的每个实体都非常繁重,我非常希望避免对其进行排序。

0 个答案:

没有答案