专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 问答 技术问答 get和load的区别?

get和load的区别?

寂月灭影已回答

与 Java 团队一同前行。

get是立即加载,load是延时加载。

get会先查一级缓存,再查二级缓存,然后查数据库;load会先查一级缓存,如果没有找到就创建代理对象,等需要的时候去查询二级缓存和数据库。(这里就体现load的延迟加载的特性。)

get如果没有找到会返回null,load如果没有找到会抛出异常。

当我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个代理对象,这个代理对象只保存了实体对象的id值,只有当我们要使用这个对象,得到其它属性时,这个时候才会发出sql语句,从数据库中去查询我们的对象;相对于load的延迟加载方式,get就直接的多,当我们使用session.get()方法来得到一个对象时,不管我们使不使用这个对象,此时都会发出sql语句去从数据库中查询出来。

浏览1,173技术问答
2021-05-25 08:52:42

聚焦热点问题
时时免费答疑

累计0人询问

极速问
  >>其他人还看过
更多问答

Java实验班

0学费 专业学前测评

Java就业班

围绕企业 直达就业

Java夜校班

业余时间学 超高性价比

Java架构师班

升职加薪 快速变现

返回顶部