继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

hibernate 查询操作的方法Load()和get()以及延迟检索的简单理解与总结

玄鉴
关注TA
已关注
手记 96
粉丝 237
获赞 4217

Load()和get()同为查询方法,涉及到一个延迟检索的概念。这也是两者的主要区别。

Get是讲获得查询对象放进内存中,而且还包括对象的属性值。但是load查询只是在内存中建立一个空壳对象,只有内存地址,没有具体的属性值。这就导致了如果没有指定的数据,就会抛出空指针异常。

这样一说两者的巨大区别立马现象。一个只需查询名字,一个却要查询这个名字的所有信息。

在大数据的今天,显然先查询名字更加快捷。特别是你不需要某些对象的时候,但是get还是把它们的所有信息都查询了出来,这就相当于做了很多无用功。

不过get也不是没有优势,比如你急徐确切数据,二查询的数据库的数据又比较少,那么一次查询所有信息也不会太过于浪费时间。因为已经获得了所有数据,没必要用session了。所以可以关闭session。

而load只是获得了对象名,却还要获得对象的更多信息,所以还需要session继续操作,所以不能关闭session。

**

总结如下:

急需且数据小的时候用get。关闭session。无数据抛出null。 不急用且数据大的时候用load。不关闭session。无数据,抛出空指针异常。

**

重点在上面,下面即使有图,也没有多大价值。不过也算一点小发现。

图片描述

图片描述

如果用户存在,则执行更新操作,如果用户不存在,则执行插入操作,而且这个方法继承了查询与更新,没必要首先get或者load进行查询操作。直接两步合一步。但是在底层执行的sql语句查询都是斌不可少的。

图片描述

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP