文档章节

hibernate fetch属性

z
 zdatbit
发布于 2016/07/18 15:28
字数 672
阅读 18
收藏 1
点赞 0
评论 0

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查询没有关系。

本文转载自:http://qinhanbin.iteye.com/blog/520038

共有 人打赏支持
z
粉丝 3
博文 43
码字总数 5767
作品 0
海淀
【Hibernate】 注解 (TEXT,LONGTEXT )

MySQL中Text, MeduimText, LongText在Hibernate中的设置 MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定)。在 My...

ok绷forever ⋅ 2017/05/01 ⋅ 0

Hibernate3简单总结part1

Hibernate3简单总结 1. 简单概念 hibernate是位于数据层(持久层)的框架。主要用于封装对数据的操作 hibernate 作用是将面向关系型数据库的操作,转换成面向对象的操作 因此,需要有数据库与...

我是小个子啊 ⋅ 2016/04/19 ⋅ 0

cannot simultaneously fetch multiple bags 异常的解决办法

异常信息如下: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags ...... 问题是什么时候出现的呢? 当一个实体对象中包含多于一个non-lazy获取...

liangtee ⋅ 2012/10/09 ⋅ 1

hibernate N+1问题

Hibernate N+1 问题及解决办法 问题出现的原因: Hibernate 中常会用到 set , bag 等集合表示 1 对多的关系,在获取实体的时候就能根据关系将关联的对象或者对象集取出,还可以设定 cacade...

毅屺 ⋅ 2016/03/20 ⋅ 0

Hibernate懒加载解析

Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制来弥补这种...

包包大人 ⋅ 2014/02/21 ⋅ 0

学习hibernate(七) -- hibernate检索策略

类级别的检索策略 类级别的检索策略可以通过class元素的lazy属性来设置,该属性默认为true,即为延迟检索。 延迟检索只对load方式有效,对get和query的查询无效。 延迟减速简单来说就是通过C...

杰克鹏仔 ⋅ 2016/04/11 ⋅ 0

Hibernate 的 batch_size 和 fetch_size 的区别

在使用hibernate时,有时会配置hibernate.jdbc.batchsize和hibernate.jdbc.fetchsize这两个属性,他们有什么区别?

xiao敏 ⋅ 2011/05/11 ⋅ 3

关于jpa与hibernate的疑惑,请熟悉的人解答一下

原先没用过jpa,这段看了一下有些了解了 但没分清楚它和hibernate的关系。 jpa的配置属性居然还有hibernate.jdbc.fetch_size,hibernate.hbm2ddl.auto等等,我就有点糊涂,它是按着hibernate的...

熊二哈 ⋅ 2012/05/17 ⋅ 3

hibernate读书笔记-懒加载《-》

懒加载是指程序推迟访问数据库,这样做可以保证有时候不必要的访问数据库,因为访问一次数据库是比较耗时的。 一、load方法的懒加载 先看如下代码段 [java] view plaincopyprint? <EMBED id=...

xiaml ⋅ 2014/04/09 ⋅ 0

No persistence unit named 'entityManagerFactory' is available

2014-9-4 下午06时07分29秒 CST>

IT先行者 ⋅ 2014/09/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 14分钟前 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 30分钟前 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 今天 ⋅ 8

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部