通过调用DAO.getAll()避免使用大量的id

时间:2010-04-08 11:38:20

标签: java performance hibernate dao

在调用List<Long>时,我们不希望返回PersonDao.getAll()个ID,而是希望内存中没有整个ID集合。

似乎返回org.springframework.jdbc.support.rowset.SqlRowSet并迭代此行集将不会保存内存中的每个对象。

这里唯一的问题是我无法将此行强制转换为我的实体。

有更好的方法吗?

通常我们想在db

中的每个Person上做一个方法

1 个答案:

答案 0 :(得分:1)

您可以使用ScrollableResults遍历结果集,并定期清除会话以处置不需要的对象。来自Hibernate书籍的例子:

ScrollableResults itemCursor = session.createQuery("from Item").scroll();
int count=0;

while ( itemCursor.next() ) {
  Item item = (Item) itemCursor.get(0);
  modifyItem(item);
  if ( ++count % 100 == 0 ) {
    session.flush();
    session.clear();
  }
}

有关更多示例和详细信息,请参阅the Hibernate reference