代码之家  ›  专栏  ›  技术社区  ›  Michael Bavin

通过调用dao.getall()避免拥有大量的ID集合

  •  2
  • Michael Bavin  · 技术社区  · 16 年前

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

    像是返回一个 org.springframework.jdbc.support.rowset.SqlRowSet 并且遍历该行集不会将每个对象保存在内存中。

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

    有更好的方法吗?

    通常我们想对数据库中的每个人都做一个方法

    1 回复  |  直到 16 年前
        1
  •  1
  •   Péter Török    16 年前

    你可以用 ScrollableResults 循环访问结果集,并定期清除会话以处理不需要的对象。冬眠手册中的示例:

    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 更多的例子和细节。