Hibernate5教程之三get和load
来源:互联网 发布:html实时数据页面设计 编辑:程序博客网 时间:2024/05/21 07:55
Hibernate有懒加载这一机制 ,何为懒加载呢?
懒加载:调用时并不加载,而等到第一次调用非主键的时候才真正的开启SQL检索。
我们在写xml的Mapping文件时,class标签中的lazy属性默认为false,lazy属性就是标记当前类是否开启懒加载,true为开启,false为关闭。可是当多表关系时,如:one-to-one、set、list等,默认的lazy为true
那么怎么体现懒加载呢?
这就得说说get和load方法了:
如果lazy=true
那么get:勤加载,load:懒加载
加载的过程是什么呢?
get:只要调用那么就先去一级缓存(Session级缓存)中检索,如果存在就放,不存在那么就看有没有启用二级缓存(Hibernate3之前是直接跳过二级缓存),如启用了二级缓存那么就会检索二级缓存,存在就返回,不存在就发起SQL查询到数据库,查询到之后存储到一级缓存中并返回结果。
load:调用的时候不会进行检索,只是将主键的值设置到了对象中就结束了,等第一次调用非主键的时候才去一级缓存中检索是否存在,存在就返回,不存在就检索是否开启二级缓存,存在就返回,不存在就发起SQL查询到数据库,查询到之后存储到一级缓存中并返回结果。
如果lazy=false
那么get和load就没有区别,load也就变成了勤加载
一般说来:
我们认为调用load那么对象就一定是存在数据库中的,所以如果不存在那么就会报异常
而get则无所谓,不存在就是null
阅读全文
0 0
- Hibernate5教程之三get和load
- Hibernate5教程之二openSession和getCurrentSession
- Hibernate之get()和load()
- Hibernate之get()和load()
- Hibernate(三)get和load区别
- Hibernate之get和load的区别
- HibernateTemplate全解之get和load
- Hibernate学习之get和load区别
- Hibernate之load和get的区别
- Hibernate之get和load的区别
- Hibernate优化(三) 之load/get、list/iterator
- get 和 load 区别
- get和load方式
- hibernate get()和load()
- hibernate get()和load()
- load()和get()
- get和load方式 .
- hibernate load 和get
- jqGrid 两层表头
- 推荐一位大佬博客<关于记录淘淘商城开发点点滴滴>
- 自动检查顶点色、2U、ID、坐标轴的测试
- Java中的switch-case语句
- Docker入门例子
- Hibernate5教程之三get和load
- 环境:Ubuntu16.04+caffe cannot find -lhdf5_hl
- 笔试题知识点
- Docker安装tfs
- SVN命令使用详解
- return-1
- 搭建本地测试的Docker Registry
- Java_基础—throws的方式处理异常/throw和throws区别
- docker logs --since参数