sessionFactory = new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
Query query = session.createQuery("from House as h ");
System.out.println("使用iterate()方法查询数据");
Iterator<House> it = query.iterate();
while(it.hasNext()){
House house = it.next();
System.out.println("标题:"+house.getTitle());
}
System.out.println("-------------------");
System.out.println("使用list()方法查询数据");
List<House> result = query.list();
for(House house:result){
System.out.println("标题:"+house.getTitle());
}
sessionFactory = new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
Query query = session.createQuery("from House as h ");
System.out.println("使用list()方法查询数据");
List<House> result = query.list();
for(House house:result){
System.out.println("标题:"+house.getTitle());
}
System.out.println("-------------------");
System.out.println("使用iterate()方法查询数据");
Iterator<House> it = query.iterate();
while(it.hasNext()){
House house = it.next();
System.out.println("标题:"+house.getTitle());
}
sessionFactory = new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
Query query = session.createQuery("from House as h ");
System.out.println("使用list()方法查询数据");
List result1 = query.list();
for(int i=0;i<result1.size();i++){
House house = (House)result1.get(i);
System.out.println("标题:"+house.getTitle());
}
System.out.println("----------------------");
System.out.println("再一次执行list()方法");
List result2 = query.list();
for(int i=0;i<result2.size();i++){
House house = (House)result2.get(i);
System.out.println("标题:"+house.getTitle());
}
sessionFactory = new Configuration().configure().buildSessionFactory();
sessessionFactory = new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
Query query = session.createQuery("from House as h ");
System.out.println("使用iterate()方法查询数据");
Iterator it1 = query.iterate();
while(it1.hasNext()){
House house = (House)it1.next();
System.out.println("标题:"+house.getTitle());
}
System.out.println("----------------------");
System.out.println("再一次执行iterate()方法");
Iterator it2 = query.iterate();
while(it2.hasNext()){
House house = (House)it2.next();
System.out.println("标题:"+house.getTitle());
}
通过以上几个例子我们不难得出结论 :
list()方法将不会在缓存中读取数据,它总是一次性的从数据库中直接查询所有符合条件的数据,同时将获取的数据写入缓存。
iterate()方法则是获取了符合条件的数据的id 后,首先根据id 在缓存中寻找符合条件的数据,若缓存中无符合条件的数据,再到数据库中查询。
所以大家在使用的时候请根据自己的情况合理使用,才能够节省资源