2019独角兽企业重金招聘Python工程师标准>>>

Hibernate的fetch="join"和fetch="select" 的一点分析 fetch参数指定了关联对象抓取的方式是select查询还是join查询,select方式时先查询返回要查询的主体对象(列表),再根据关联外键id,每一个对象发一个select查询,获取关联的对象,形成n+1次查询; 而join方式,主体对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询。 如果你的关联对象是延迟加载的,它当然不会去查询关联对象。 另外,在hql查询中配置文件中设置的join方式是不起作用的(而在所有其他查询方式如get、criteria或再关联获取等等都是有效的),会使用select方式,除非你在hql中指定join fetch某个关联对象。 fetch策略用于定义 get/load一个对象时,如何获取非lazy的对象/集合。 这些参数在Query中无效。 fetch策略用于定义 get/load一个对象时,如何获取非lazy的对象/集合。 这些参数在Query中无效。 查询抓取(默认的)在N+1查询的情况下是不好的,因此我们可能会要求在映射文档中定义使用连接抓取: 在映射文档中定义的抓取策略将会有产生以下影响: 通过get()或load()方法取得数据。 只有在关联之间进行导航时,才会隐式的取得数据(延迟抓取)。 条件查询 在映射文档中显式的声明 连接抓取做为抓取策略并不会影响到随后的HQL查询。 通常情况下,我们并不使用映射文档进行抓取策略的定制。更多的是,保持其默认值,然后在特定的事务中, 使用HQL的左连接抓取(left join fetch) 对其进行重载。这将通知 Hibernate在第一次查询中使用外部关联(outer join),直接得到其关联数据。 在条件查询 API中,应该调用 setFetchMode(FetchMode.JOIN)语句。 其实这并不能说明hql能够按照配置文件设置的join进行抓取,这时 第二级:topic-->forum 的抓取其实已经和hql没有关系了,因为前面已经产生了另一个select方式的抓取语句。 而是对象的关联获取,假如查询message时topic是设置为延迟加载的,那么在后面获取message.topic时,如topic.forum不延迟加载,那么topic-->forum会实现配置的join方式的抓取,这个显然和hql查询没有关系。

转载于:https://my.oschina.net/u/2402401/blog/713862

hibernate fetch属性相关推荐

  1. Hibernate配置属性详解

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

  2. 引用 Hibernate 配置属性

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

  3. hibernate fetch使用

    fetch 和 lazy 配置用于数据的查询 lazy 参数值常见有 false 和 true,Hibernate3 映射文件中默认lazy = true : fetch 指定了关联对象抓取的方式,参 ...

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

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

  5. hibernate inverse属性的作用

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

  6. hibernate lazy属性参数说明

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

  7. Hibernate Cascade 属性

    1.在一对多的 set配置中 , inverse="true" 表示 反转,即由多方来控制. 2.在一对多的 set配置中, cascade="all" 表示 ...

  8. Hibernate Inverse属性

    inverse属性: 在one方的一对多关联中设置inverse属性为true,则表示由多方来维护关联关系,这有助于性能的改善: 不设置该属性的话双方都会维护关联关系 eg: <set name ...

  9. hibernate笔记(三) Hibernate标识符属性(主键)生成策略全析

    2019独角兽企业重金招聘Python工程师标准>>> 其实网络有很多文章都写的很好, 只要我们去一一敲下来,那么就很容易融会贯通了,复制黏贴博客太累,大家直接看大神写的吧 : ht ...

最新文章

  1. 首次统一卷积与自注意力,X-volution发力网络核心基础架构创新
  2. 程序员的能力矩阵表【转载自】
  3. 任务 进程 线程区别
  4. find out the service list changed with given user which have item category group
  5. orchard mysql_如何在Orchard CMS 1.3.10中使用MySQL数据库?
  6. 服务器虚拟多台linux,VirtualBox环境下基于多台Ubuntu虚拟机的Hadoop分布式计算环境搭建...
  7. 测试点击屏幕次数的软件_软件测试工程师面试如何回答登录功能怎么进行测试?...
  8. DVWA中学习PHP常见漏洞及修复方法
  9. bt porting
  10. 基于Unity的软光栅实现(1):框架搭建和矩阵构造
  11. 常用URLscheme整理+不同场景下打开URLscheme的方法(adb/安卓原生/按键精灵/auto.js/uniapp/easyclick)
  12. 四六级考试中的计算机类文章,四六级英语考试进入机考时代
  13. 大数据与人工智能学习心得_大数据与R
  14. 软件缺陷(定义+表现形式+优先级+信息+产生原因),看完这篇文章就懂了
  15. ng alain的简单使用
  16. DWH - 自动化监控BI系统的存储空间
  17. 计算机毕业设计JAVA旅游管理系统mybatis+源码+调试部署+系统+数据库+lw
  18. Handler源码分析 - Java层
  19. GFCTF2021 部分WP
  20. a10 amd 安装黑苹果_黑苹果安装入门(hackintosh install)

热门文章

  1. 2021陕西高考单招成绩查询,2020陕西高考高职单招成绩一分一段表高考成绩排名...
  2. python正则表达式案例_Python正则表达式使用经典实例
  3. html贪吃蛇怎么加蛇尾,贪吃蛇制作移动+pc
  4. mysql text字段导出_用命令创建MySQL数据库
  5. 支付签约_已成燎原之势!蜻蜓支付出库、签约、地推火爆!
  6. Webpack執行打包:“You may need an appropriate loader to handle this file type“
  7. JAVA的日期与毫秒的相互转换
  8. 20200706:不同路径 II(leetcode63)
  9. 20200301:快乐数(leetcode202)
  10. Windows下部署yolov5实现口罩检测