@Test
public void testList(){
Session s = sf.getCurrentSession();
s.beginTransaction();
List<Category> tp =  s.createQuery("from Category ").list();
for (Category t : tp){
System.out.println(t.getId());
}
List<Category> tp2= s.createQuery("from Category").list();
for(Category t : tp2){
System.out.println(t.getId());
}
s.getTransaction().commit();
}
@Test
public void testIterate(){
Session s = sf.getCurrentSession();
s.beginTransaction();
Iterator<Category> it = s.createQuery("from Category").iterate();
while(it.hasNext()){
Category t =(Category)it.next(); 
System.out.println(t.getId());
}
Iterator<Category> it2 = s.createQuery("from Category").iterate();
while(it2.hasNext()){
Category t1= it2.next();
    System.out.println(t1.getId());
}

s.getTransaction().commit();
}这里测list和iterate的方法没有区别啊,iterate的第二次查询仍让要发sql语句,并没有使用缓存
Hibernate: 
    select
        category0_.id as col_0_0_ 
    from
        Category category0_
1
2
3
4
5
6
7
8
9
10
Hibernate: 
    select
        category0_.id as col_0_0_ 
    from
        Category category0_
1
2
3
4
5
6
7
8
9
10