对find和iterate两个查询方法的比较,并不完善,你这种断章取义的总结容易误导别人.
你的叙述在暗示一种结论:iterate方法比find更好,因为它更好的利用了缓存.实际的情况是,如果使用了iterate方法返回Iterator类型的查询结果,那么你一旦关闭session,Iterator中的数据立即就会消失.而通过find得到的List则不会如此,我想大部分人的使用习惯都是操作完成后立即关闭session,很多公司也强制要求这样做.
Iterator的另一个麻烦事是fail-fast,在多线程环境下,很容易产生.使用线程安全的List子类,则不会有这个问题