ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
# 10.4.1.1\. 迭代式获取结果(Iterating results) 某些情况下,你可以使用`iterate()`方法得到更好的性能。 这通常是你预期返回的结果在session,或二级缓存(second-level cache)中已经存在时的情况。 如若不然,`iterate()`会比`list()`慢,而且可能简单查询也需要进行多次数据库访问: `iterate()`会首先使用_1_条语句得到所有对象的持久化标识(identifiers),再根据持久化标识执行_n_条附加的select语句实例化实际的对象。 ``` // fetch ids Iterator iter = sess.createQuery("from eg.Qux q order by q.likeliness").iterate(); while ( iter.hasNext() ) { Qux qux = (Qux) iter.next(); // fetch the object // something we couldnt express in the query if ( qux.calculateComplicatedAlgorithm() ) { // delete the current instance iter.remove(); // dont need to process the rest break; } } ```