[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已经查出
}
本文详细对比了Hibernate中Session使用load和get方法加载数据库数据的区别。load方法生成代理对象,在实际调用时才发送SQL语句;而get方法则直接发送SQL语句获取数据。
1287

被折叠的 条评论
为什么被折叠?



