對find和iterate兩個查詢方法的比較,并不完善,你這種斷章取義的總結容易誤導別人.
你的敘述在暗示一種結論:iterate方法比find更好,因為它更好的利用了緩存.實際的情況是,如果使用了iterate方法返回Iterator類型的查詢結果,那么你一旦關閉session,Iterator中的數據立即就會消失.而通過find得到的List則不會如此,我想大部分人的使用習慣都是操作完成后立即關閉session,很多公司也強制要求這樣做.
Iterator的另一個麻煩事是fail-fast,在多線程環境下,很容易產生.使用線程安全的List子類,則不會有這個問題