iterate查询与N+1此查询问题
* 使用iterate()出现n+1次问题,用list呢????list在不存在关联查询(懒加载情况)的情况不会产生此问题;
* 懒加载情况也会产生n+1次问题。
* ctr+t查看方法在实现类中的情况;
* get\load\update会从一级缓存读取数据;query会将数据放入一级缓存,但不会读取一级缓存,query能读取二级缓存;
static void query() throws Exception{ Session s = null; try { s = HibernateUtil.getSession(); Iterator iterator = s.createQuery("from Employee").iterate(); //会产生n+1问题 // while (iterator.hasNext()) { // Employee employee = (Employee) iterator.next(); // System.out.println(employee.getName()); // } //list在不存在关联查询(懒加载情况)的情况不会产生n+1问题 // List<Employee> list = s.createQuery("from Employee").list(); // for(Employee employee : list){ // System.out.println(employee.getName()); // } //本地化sql查询 List<Employee> list = s.createSQLQuery("select * from t_employee").addEntity(Employee.class).list(); for(Employee employee : list){ System.out.println(employee.getName()); } } catch (Exception e) { throw e; }finally{ if(s != null) s.close(); } } }