lazy,延迟加载

Lazy的有效期:只有在session打开的时候才有效;session关闭后lazy就没效了。

lazy策略可以用在:

* <class>标签上:可以取值true/false

* <property>标签上,可以取值true/false,这个特性需要类增强

* <set>/<list>等集合上,可以取值为true/false/extra

* <one-to-one>/<many-to-one>等标签上,可以取值false/proxy/no-proxy

6.1 get和load的区别:

* get不支持延迟加载,而load支持。

* 当查询特定的数据库中不存在的数据时,get会返回null,而load则抛出异常。

6.2 类(Class)的延迟加载:

* 设置<class>标签中的lazy="true",或是保持默认(即不配置lazy属性)

* 如果lazy的属性值为true,那么在使用load方法加载数据时,只有确实用到数据的时候才会发出sql语句;这样有可能减少系统的开销。

* //不会发出查询sql

System.out.println("group id=" + group.getId());

这里有一个问题,为什么加载主键的时候不需要发出sql语句。

6.3 集合(collection)的延迟加载:可以取值true,false,extra

* 保持集合上的lazy的默认值,此时的效果和lazy="extra"是基本一样的。

* 设置集合上的lazy=extra,此时的效果和lazy属性的默认值是基本一样的。但是推荐使用这个属性值,因为在统计时这种情况显得比较智能。当然延迟是有效果的。

* 设置集合上的lazy=false

true:默认取值,它的意思是只有在调用这个集合获取里面的元素对象时,才发出查询语句,加载其集合元素的数据

false:取消懒加载特性,即在加载对象的同时,就发出第二条查询语句加载其关联集合的数据

extra:一种比较聪明的懒加载策略,即调用集合的size/contains等方法的时候,hibernate

并不会去加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在真正需要用到这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据

6.4 Hibernate单端关联懒加载策略:即在<one-to-one>/<many-to-one>标签上可以配置

懒加载策略。可以取值为:false/proxy/no-proxy

false:取消懒加载策略,即在加载对象的同时,发出查询语句,加载其关联对象

proxy:这是hibernate对单端关联的默认懒加载策略,即只有在调用到其关联对象的方法的时候才真正发出查询语句查询其对象数据,其关联对象是代理类

no-proxy:这种懒加载特性需要对类进行增强,使用no-proxy,其关联对象不是代理类

注意:在class标签上配置的lazy属性不会影响到关联对象!!!

Lazy 呀!!!!!!相关推荐

  1. 单例模式的两种实现方式对比:DCL (double check idiom)双重检查 和 lazy initialization holder class(静态内部类)...

    首先这两种方式都是延迟初始化机制,就是当要用到的时候再去初始化. 但是Effective Java书中说过:除非绝对必要,否则就不要这么做. 1. DCL (double checked lockin ...

  2. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  3. HYSBZ - 1798 Seq 维护序列seq 线段树lazy标记

    传送门 这道题属实是线段树的道比刷题,又加又乘的,当然还可能会有乘除,阶乘等等可能的情况. 对于这道题,主要的一个就是怎么记录lazy标记,首先的话一个数组是肯定不行的,设乘的为lazy,加的为add ...

  4. hibernate 全面学习【lazy策略 】

    2019独角兽企业重金招聘Python工程师标准>>> lazy策略可以用在: * <class>标签上:可以取值true/false * <property> ...

  5. scala学习笔记-过程、lazy值和异常(6)

    过程 在Scala中,定义函数时,如果函数体直接包裹在了花括号里面,而没有使用=连接,则函数的返回值类型就是Unit.这样的函数就被称之为过程.过程通常用于不需要返回值的函数. 过程还有一种写法,就是 ...

  6. 怎么确定迭代器后面还有至少两个值_JS Lazy evaluation:可迭代对象与迭代器

    本文已经过原作者 MelkorNemesis 授权翻译. Lazy evaluation Lazy evaluation常被译为"延迟计算"或"惰性计算",指的 ...

  7. Lazy Line Painter – 很有趣的 jQuery 路径动画插件

    Lazy Line Painter 是基于 Raphaël(一个用于在网页中绘制矢量图形的 Javascript 库)的 jQuery 路径动画插件,能够把线条图案转换为吸引眼球的路径动画模式. 您可 ...

  8. Spring @Lazy

    @DependsOn用于强制初始化其他Bean.可以修饰Bean类或方法,使用该Annotation时可以指定一个字符串数组作为参数,每个数组元素对应于一个强制初始化的Bean. @DependsOn ...

  9. Hibernate5-多对一双向关联-fetch=select,lazy=proxy,在一的一方的class标签中添加

    1.创建项目,项目名称hibernatedemo28,目录结构如图所示 2.在项目中创建lib目录存储jar文件,目录结构如图所示 3.在src目录中创建实体类Forum,包名(com.mycompa ...

  10. 飘逸的python - property及实现lazy property

    @property有什么用呢?表面看来,就是将一个方法用属性的方式来訪问. 上代码,代码最清晰了. class Circle(object):def __init__(self, radius):se ...

最新文章

  1. 推荐一个论文复现神器!
  2. 操作系统学习:启动进入实模式
  3. Hibernate5.x Idea搭建
  4. 熟悉Redhat 9.0
  5. 【HDU - 6514】Monitor(二维差分,前缀和)
  6. 虚拟机安装 服务器 Ubuntu Server20.04.2
  7. 腾讯视频客户端如何设置快进速度
  8. C++喜欢收录和反链都保持增长的态势
  9. Fatal error: Call to undefined function randstr()
  10. [每日一题] 11gOCP 1z0-052 :2013-09-24 temporary tables.........................................C11...
  11. mesh threejs 属性_ThreeJS拖动案例解析
  12. 各种常用STL容器选择 需求分析笔记
  13. [附源码]java毕业设计社区医院电子病历系统
  14. 温度传感器MLX90614的STM32驱动实现
  15. IP0_Verilog实现基于双线性插值算法的图像放大IP设计
  16. 从零构建知识图谱(技术、方法与案例)-第一章:知识图谱概览
  17. ABD-Net: AttentivebutDiversePersonRe-Identification论文阅读
  18. 基于(plc)portal v14的三级传送带设计
  19. 蓝桥杯基础练习之十六进制转八进制
  20. 【数学相关、逻辑推理】

热门文章

  1. [brew|Mac]如何将软件发布到Homebrew
  2. LaTeX \genfrac 分式命令
  3. 超(效)等位基因,亚(效)等位基因,反(效)等位基因,新(效)等位基因
  4. 家庭监控系统实现(一) -- 硬件准备及picamera使用
  5. 学习表——受任于败军之际,奉命于危难之间(12.19-12.25)
  6. ICCV2021: 淘系素材制备平台中的自研交互式分割技术(含试用demo)
  7. 系统运维架构 DevOps
  8. 站住!做副业的亲,是时候跟你们做个了结了!
  9. 判断用户输入的数为正数还是负数
  10. 阿里云王牌架构师杨曦:N多环境N多应用个性配置管理如何从混乱到简单?