Hibernate中iterate方法與list方法的區別

list方法:當咱們查詢多條記錄的時候咱們使用list結構來接收查詢結果,這時候hibernate會根據咱們設置的lazy值來選擇查詢時機,而一旦查詢了,則是把多條記錄所有查詢出來。sql

iterate方法:當咱們查詢多條記錄的時候使用iterate方法。用一個iterator結構來接收,這時候hibernate也會根據lazy的設置來選擇查詢時機,開始查詢了,並不會把咱們要查詢的全部記錄查詢出來,而是查詢全部記錄的主鍵,只有迭代到哪一個對象再經過該對象的主鍵再進行查詢。session

總結:但咱們查詢的記錄爲N,list方式只執行1條sql語句,而iterate方式則是要看咱們迭代幾條記錄,若是迭代M條記錄,則會執行 M+1條sql語句。測試

例如:spa

測試代碼:.net

@Test     public void testIterator01(){         Session session = Util.getSession();         Transaction ts = session.beginTransaction();         List<User> users = session.createCriteria(User.class).list();         for(User u : users){             System.out.println("name:"+u.getUsername());         }         ts.commit();         Util.closeSession();         session = Util.getSession();         ts = session.beginTransaction();         String hql = "from User ";         Iterator<User> results =session.createQuery(hql).iterate();         for(;results.hasNext();){             System.out.println("name:"+results.next().getUsername());         }         ts.commit();         Util.closeSession();     }
相關文章
相關標籤/搜索