语句生成Hibernate中session.get和session.load的区别

时间紧张,先记一笔,后续优化与完善。

    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直接从数据库加载,不会延迟。

文章结束给大家分享下程序员的一些笑话语录: 打赌
飞机上,一位工程师和一位程序员坐在一起。程序员问工程师是否乐意和他一起玩一种有趣的游戏。工程师想睡觉,于是他很有礼貌地拒绝了,转身要睡觉。程序员坚持要玩并解释说这是一个非常有趣的游戏:"我问你一个问题,如果你不知道答案,我付你5美元。然后你问我一个问题,如果我答不上来,我付你5美元。"然而,工程师又很有礼貌地拒绝了,又要去睡觉。  程序员这时有些着急了,他说:"好吧,如果你不知道答案,你付5美元;如果我不知道答案,我付50美元。"果然,这的确起了作用,工程师答应了。程序员就问:"从地球到月球有多远?"工程师一句话也没有说,给了程序员5美元。  现在轮到工程师了,他问程序员:"什么上山时有三条腿,下山却有四条腿?"程序员很吃惊地看着工程师,拿出他的便携式电脑,查找里面的资料,过了半个小时,他叫醒工程师并给了工程师50美元。工程师很礼貌地接过钱又要去睡觉。程序员有些恼怒,问:"那么答案是什么呢?"工程师什么也没有说,掏出钱包,拿出5美元给程序员,转身就去睡觉了。

原文地址:https://www.cnblogs.com/xinyuyuanm/p/3084509.html