从PostgreSql DB逐个获取记录

时间:2012-05-18 20:16:35

标签: java hibernate postgresql

有一个包含大约300-400条记录的数据库。我可以进行简单的查询来获取30条记录,如:

SELECT * FROM table
WHERE isValidated = false
LIMIT 30

关于DB表内容的更多说法。有一个名为isValidated的列,可以(正如您猜测的那样)采用以下两个值之一:true或false。在查询之后,应该验证一些记录(isValidated = true)。每组30条记录大约有5-6条记录。相应地,在每次查询之后,我将从先前的查询中获取记录(isValidated = false)。事实上,我永远不会用这种方法达到最终目的。

验证过程是使用Java + Hibernate完成的。我是Hibernate的新手,所以我使用Criterion进行这个简单的查询。

这项任务是否有最佳实践?添加了标志字段(标记已经提取的记录)的变体是不合适的(对此DB进行过度设计)。 也许有机会创建一些虚拟表,其中已存储的记录将被存储或类似的东西。顺便说一句,在处理完所有记录之后,计划再次开始处理它们(有可能需要对其中一些进行验证)。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我可以想象几种解决方案:

  1. 将所有内容存储在内存中。你只有400条记录,鉴于这个数字很小,它可能是一个非常好的解决方案
  2. 在唯一列(例如PK)上使用order by子句(您应该这样做),存储上次加载的记录的ID,并确保下一个查询使用where ID > :lastId