Hibernate 中lazy的作用

上一篇 / 下一篇  2009-06-24 20:02:20 / 个人分类:java

查看( 506 ) / 评论( 2 ) / 评分( 5 / 0 )
<many-to-one name="departmentInfo" class="com.plane.beans.DepartmentInfo" lazy="false" fetch="select">

延迟加载

比如查询一张表时,有外键对应另一张表
可以使用延迟加载
这样就不会把外键对应表的数据加载

=======================================

lazy是延迟加载,默认是延迟加载。
主要是为了系统的性能,当一张表引用到另外一张表时,如果不是立即需要另外一张表的内容,就可以采取延迟加载,直到要用到时才加载另外一张表。

===========================================

lazy是延迟加载,默认是延迟加载。 延迟加载的作用就是增加系统的性能度,得到你想要的数据,你不想要的数据不会给你查出来

================================================

其实手动延迟加载比较好,又提高了系统的性能,想要的时候就加载,不要就不用具体如下:在取数据的时候代码中写一段就行:
Hibernate.initialize(s.getGradeclass());就行,就代表对象s中加载gradeclass这张表的数据!

================================================
fetch 和 lazy 主要是用来级联查询的,
而 cascade 和 inverse 主要是用来级联插入和修改的      
   fetch参数指定了关联对象抓取的方式是select查询还是join查询,
select方式时先查询返回要查询的主体对象(列表),再根据关联外键 id,
每一个对象发一个select查询,获取关联的对象,形成n+1次查 询;
而join方式,主体对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询。
如果你的关联对象是延迟加载的,它当然不会去查询关联对象。 另外,在hql查询中配置文件中设置的join方式是不起作用的(而在所有其他查询方式如get、criteria或再关联获取等等都是有效的),会使用 select方式,除非你在hql中指定join fetch某个关联对象。fetch策略用于定义 get/load一个对象时,如何获取非lazy的对象/集合。 这些参数在Query中无效。
========================================================
   fetch 和 lazy 主要是用来级联查询的,   而 cascade 和 inverse 主要是用来级联插入和修改的

inverse 属性默认是false的,表示由己方来维护关系。cascade="all" 时候能级联操作(all指定了操作的程度),而none的时候只是维持两者之间的关系(如果inverse="false")
      在一对多映射中,一的一方要设<set inverse="true" casecade="save-update" />,多的一方要设<many-to-one inverse=false />

inverse=true作用: 这里关系是由儿子维护的,所以如果只是往父亲里加入儿子,不给儿子设置父亲的话session.save(parent),就不会保存儿子!

因为父亲有个孩子的集合,他无法知道哪个孩子的父亲id已经指向自己了,所以对于每一个孩子,都要更新父亲使他只想自己,而这个关系由孩子维护就好多了, 每个孩子只有一个父亲,只有设置过的才需要更新,所以显然,这个父子关系由孩子来维护比较省力.减轻了数据库的负担

fetch参数指定了关联对象抓取的方式是select查询还是 join查询,select方式时先查询返回要查询的主体对象(列表),再根据关联外键id,每一个对象发一个select查询,获取关联的对象,形成 n+1次查询;而join方式,主体对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询。如果同时fetch="join" lazy="true"经过测试发现fetch有效。另外,在hql查询中配置文件中设置的join方式某些情况下是不起作用的(而在所有其他查询方式如get、criteria或再关联获取等等都是有效的),会使用select方式,除非你在hql中指定join fetch某个关联对象。

转载于:https://www.cnblogs.com/yanzi629/archive/2013/01/10/2854846.html

Hibernate 中lazy的作用相关推荐

  1. hibernate中lazy的使用

    lazy,延迟加载 Lazy的有效期:只有在session打开的时候才有效:session关闭后lazy就没效了. lazy策略可以用在: * <class>标签上:可以取值true/fa ...

  2. hibernate中load和get方法的区别 lazy的策略

    1  get不支持lazy   load支持lazy 2  采用get加载数据时,如果无匹配数据则返回null         load则报异常 --------------------------- ...

  3. Hibernate中hbm.xml文件的inverse、cascade、fetch、outer-join、lazy

    2019独角兽企业重金招聘Python工程师标准>>> inverse : 用于控制表与表之间的关系,默认值为"false",一般在多对多或一对多双向关联中常见, ...

  4. SessionFactory在Hibernate中的作用

    SessionFactory在Hibernate中实际上起到了一个缓冲区的作用 他缓冲了HIbernate自动生成SQL语句和其他的映射数据 还缓冲了一些将来有可能重复利用的数据 为了能创建一个Ses ...

  5. hibernate中session和sessionFactory的作用

    转载:https://blog.csdn.net/m0_37154839/article/details/79506466 https://www.cnblogs.com/baizhanshi/p/7 ...

  6. 在Spring、Hibernate中使用Ehcache缓存

    前一篇http://blog.csdn.net/ibm_hoojo/article/details/7739181介绍了Ehcache整合Spring缓存,使用页面.对象缓存:这里将介绍在Hibern ...

  7. hibernate中的映射文件xxx.hbm.xml详解总结

    一.Hibernate映射文件的作用: Hibernate映射文件是Hibernate与数据库进行持久化的桥梁 二,Hibernate映射文件主要内容:     (1).映射内容的定义: Hibern ...

  8. hibernate的lazy的使用

    引用:https://blog.csdn.net/Vincent_yuan1991/article/details/53482487 一: lazy,延迟加载 Lazy的有效期:只有在session打 ...

  9. Hibernate中的sql的所有的查询

    Hibernate 中HQL语句 本章介绍了Hibernate的几种主要检索方式:HQL检索方式.QBC检索方式.SQL检索方式.HQL是Hibernate Query Language的缩写,是官方 ...

最新文章

  1. mysql管理节点_mysql8 参考手册-NDB群集管理节点配置参数
  2. 马斯克的星际飞船SN10又炸了,但技术却向前迈出一大步!
  3. 下拉框选中事件ajax,LayUI中select下拉框选中触发事件
  4. 使用JSON Web Token设计单点登录系统--转
  5. 成功解决pypmml.base.PmmlError: (‘MalformedInputException‘, ‘Input length = 1‘)
  6. P2617 Dynamic Rankings(带修主席树)
  7. 十八、Matplotlib数据可视化
  8. SwiftUI之深入解析布局如何自定义AlignmentGuides
  9. java 时间戳 星期几_java自定义获取星期几、几点、几分。
  10. ieee754浮点数转换工具_关于JS浮点数运算不精确的原因和解决方案
  11. 转载:MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
  12. keras demo - fashion_mnist
  13. 很多男孩不知道:她喜欢你
  14. udp客户端 Java_java UDP通信客户端与服务器端实例分析
  15. 百度硬盘邀请码在放送
  16. GD32F103ZKT6替换STM32F103调试手记
  17. h264解码保存为yuv格式
  18. SPSS李克特五点计分调查问卷的选项如何设置?【SPSS 066期】
  19. 直播课堂系统,打造出超过线下培训场景200%的在线学习课堂
  20. 【供应链】全面分析供应链类型

热门文章

  1. java课程设计日历记事本代码,已开源
  2. mysql1045错误如何解决,Java面试真题精选
  3. 【深度学习】详解集成学习的投票和Stacking机制
  4. 【Java Web后台实验与开发】关于SSH框架的探索
  5. pwa要离线html么,正确使用PWA
  6. linux怎么装谷歌浏览器,如何在linux CentOS 上安装chrome 谷歌浏览器?
  7. 有条件截取字符串_Python小课堂之木辛老师特别讲解:再次深入浅出字符串的格式化...
  8. debain unable to find the kernel_云改的核心技术:主机虚拟化(TO 政企人员)
  9. 集合 Arrays.asList | java.lang.UnsupportedOperationException: null
  10. 浅析网站外链优劣如何判定?