1+n问题就是在查询中,本来一条sql就能搞定的查询却用了1+n条sql(前提是一级缓存session中没有缓存).在程序运行当中,应避免1+N问题
@Test
public void t(){
Session session = HibernateUtil.getInstance().getSession();
session.beginTransaction();
List<Integer> ids = session.createQuery("select id from Employee").list();
for(Integer i : ids){
session.get(Employee.class, i);
}
session.getTransaction().commit();
session.close();
}
下面是典型1+N问题,这样严重影响了查询效率
@Test
public void t(){
Session session = HibernateUtil.getInstance().getSession();
session.beginTransaction();
Iterator<Employee> i = session.createQuery("from Employee").iterate();
while(i.hasNext()){
System.out.println(i.next().getName());
}
session.getTransaction().commit();
session.close();
}