[align=center][size=x-large][color=red][b]session加载数据库数据时,load 和 get[/b][/color][/size][/align]
[size=medium][color=green][b]1.load是生成代理对象,调用该对象时才发出sql语句[/b][/color][/size]
[size=medium][color=green][b]2.get是直接发sql语句[/b][/color][/size]
[size=medium][color=green][b]1.load是生成代理对象,调用该对象时才发出sql语句[/b][/color][/size]
public void testLoad() {
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.load(Teacher.class, 1);
//System.out.println(t.getName()); //此时生成sql语句
session.getTransaction().commit();
System.out.println(t.getName()); //次句会报错ERROR LazyInitializationException,应为load生成的是代理对象,发出sql会有延迟,此处调用发出sql时,session已经关闭,所有会报错no session
}
[size=medium][color=green][b]2.get是直接发sql语句[/b][/color][/size]
public void testGet() {
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.get(Teacher.class, 1); //此时生成sql语句
session.getTransaction().commit();
System.out.println(t.getName()); //不会报错,输出对象t的name,因为t已经查出
}