现在的位置: 首页 > 综合 > 正文

Hibernate中session.get和session.load的区别

2013年02月19日 ⁄ 综合 ⁄ 共 311字 ⁄ 字号 评论关闭

session.get会立即生成SQL语句去执行

而session.load并不会立即生成SQL语句去执行,会先生成你的对象的代理,当你使用到这个对象的属性时才会生成SQL语句去执行

如:

Teacher t = (Teacher)session.load(Teacher.class,1);
session.getTranscation.commit();

执行以上两步并不会报错。

而继续执行:

System.out.println(t.getName());

则会报错。原因就是这时候再去执行SQL的时候session已经关闭了。

总结:load返回的是代理对象,等到真正用到对象的内容时才发出sql语句。

get直接从数据库加载,不会延迟。

抱歉!评论已关闭.