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属性不会影响到关联对象!!!

hibernate lazy属性参数说明相关推荐

  1. HIbernate Lazy 常用配置

    Lazy:延迟加载,在真正使用某个对象的时候才正真的去创建,即hibernate才会正真的发出sql语句去加载该对象 Lazy的有效期:只有在session打开的时候才有效:session关闭后laz ...

  2. Hibernate配置属性详解

    http://www.360doc.com/content/12/0228/19/1369263_190362729.shtml 表 3.3.  Hibernate配置属性 属性名 用途 hibern ...

  3. FW: How to use Hibernate Lazy Fetch and Eager Fetch Type – Spring Boot + MySQL

    原帖 https://grokonez.com/hibernate/use-hibernate-lazy-fetch-eager-fetch-type-spring-boot-mysql In the ...

  4. 引用 Hibernate 配置属性

    表 4.1.  Hibernate JDBC属性 属性名 用途 hibernate.connection.driver_class jdbc驱动类 hibernate.connection.url j ...

  5. hibernate lazy加载

    2019独角兽企业重金招聘Python工程师标准>>> HIBERNATE的持久化对象加载策略. 延迟加载, 也就是用到的时候才去加载.这样可以提高一些性能. Hibernate的l ...

  6. Hibernate标识符属性(主键)生成策略全析

    数据库中的主键能够唯一识别一条记录,它可以是一个字段也可以是多个字段的组合.主键的主要作用是标识表中的一条记录,还有和其他表中的数据进行关联.数据库中的主键类型必须符合唯一性约束和非空约束.作为附加属 ...

  7. hibernate inverse属性的作用

    hibernate配置文件中有这么一个属性inverse,它是用来指定关联的控制方的. inverse属性默认是false,若为false,则关联由自己控制,若为true,则关联 由对方控制. 见例子 ...

  8. hibernate fetch属性

    2019独角兽企业重金招聘Python工程师标准>>> Hibernate的fetch="join"和fetch="select" 的一点分析 ...

  9. java lazy loading_java – Spring,@Transactional和Hibernate Lazy Loading

    Hibernate最近推出了提取配置文件(除了性能调优之外)是解决这类问题的理想选择.它允许您(在运行时)在不同的加载和初始化策略之间进行选择. 编辑(添加了关于如何使用拦截器设置抓取配置文件的部分) ...

最新文章

  1. linux 防火墙 命令
  2. bzoj4396[Usaco2015 dec]High Card Wins*
  3. .NET应用架构设计—面向查询服务的参数化查询设计(分解业务点,单独配置各自的数据查询契约)...
  4. 想做测试经理的看过来
  5. MFC 操作配置文件INI的方法
  6. 纯CSS实现锚点跳转位置上下偏移的办法
  7. 超赞!机器学习画图模板ML Visuals更新了
  8. adprw指令通讯案例_超实用,非常典型的Modbus通讯项目案例,三分钟学会
  9. 2018最新java版区块链开发视频教程免费下载
  10. 矢量绘图软件 android,sai绘图软件官方
  11. 文献阅读-CSC-中文错别字-有关论文搜集-+CGED
  12. xubuntu language support
  13. 前端-HTML基础入门
  14. linux shell脚本攻略 第三章 以文件之名 find,chmod,touch,head,tail,tree,wc
  15. 在react怎样引入jQuery
  16. 红旗linux桌面版6.0 sp3,红旗Linux桌面版6.0SP1发布及下载
  17. duobango-tinySDP,rfc 2327
  18. 【香蕉oi】Game(SAM,SG函数,假题)
  19. 洛谷4140 奇数国
  20. WebGL实时视频(6) Unity里面显示视频

热门文章

  1. Springboot毕业设计毕设作品,黑白图片和上色处理系统 开题报告
  2. 面对已知问题和未知问题的解决思路
  3. 02 stata入门【计量经济学及stata应用】
  4. #GNS3,wireshark,CRT的安装
  5. 第二周数据库学习笔记
  6. NLP专题直播 | Transformer, BERT, ALBERT, XLNet全面解析(ALBERT第一作者亲自讲解)
  7. 9亿财产如何分配:大S与汪小菲离婚所感
  8. 《听后感-罗振宇2023“时间的朋友”跨年演讲》
  9. ListView和条目点击事件、条目长按事件
  10. Vue ant打包服务器-并配置【nginx子路径+linux环境】跨域解决+jenkins自动部署