java面试题网

普通会员

115

帖子

83

回复

167

积分

楼主
发表于 2019-09-27 12:10:56 | 查看: 5044| 回复: 0

Hibernate的查询方式有哪些? get和load的区别是什么?

Hibernate的查询方式有哪些? 
Hibernate的查询方式常见的主要分为三种: HQL, QBC(命名查询), 以及使用原生SQL查询(SqlQuery) 

get和load的区别?
(1)get是立即加载,load是延时加载。
(2)get 会先查一级缓存,再查二级缓存,然后查数据库;load 会先查一级缓存,如果没有找到,就创建代理对象,等需要的时候去查询二级缓存和数据库。(这里就体现load的延迟加载的特性。)
(3)get如果没有找到会返回null,load如果没有找到会抛出异常。
(4)当我们使用 session.load()方法来加载一个对象时,此时并不会发出 sql 语句,当前得到的这个对象其实是
一个代理对象,这个代理对象只保存了实体对象的id值,只有当我们要使用这个对象,得到其它属性时,这个时候才会发出 sql 语句,从数据库中去查询我们的对象;相对于 load 的延迟加载方式,get 就直接的多,当我们使用session.get()方法来得到一个对象时,不管我们使不使用这个对象,此时都会发出sql语句去从数据库中查询出来。 


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1368_1_1.html


java面试题交流群:327440556

您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018