文档章节

Hibernate的四种抓取策略

猪刚烈
 猪刚烈
发布于 2014/10/12 11:47
字数 415
阅读 12
收藏 0
点赞 0
评论 0

subselect fetching是hibernate特有的抓取策略。它在抓取时机上有些介于lazy和eager之间(只是这样说,它实际上是配合lazy的一种抓取策略)。 一方面,它是在集合第一次被访问时才进行抓取,这有一些lazy的意味。但同时它的确预先抓取了一些“额外”的数据出来,而这些数据是要在后面使用到的,从而避免了多次select,这又有些eager的意味。 subselect比select智能的地方在于,它会把上次load出来的包含这个集合的结果集做为子查询来查所有的集合。之所以说这种方式适合用来抓取平行集合是因为:在此之前集合从属对象一定已经抓取出来了。


subselect fetching是抓取平行集合最好的方案。对于平行集合,由于笛卡尔积的问题,join fetch不能考虑了,如果使用select fetch,又有可能出现n+1次查询问题,最好的方案就是subselect fetch了。但是尽管如此,subselect fetching还是不能很好的解决抓取平行集合的问题。原因就在于它是一种全局抓取策略。当我们想要抓取平行集合元素所依赖的其他对象时就没有使用动态抓取的机会了。这确实是一个问题。目前我还在寻找解决方法。其中一个构想中的方案是:通过二级缓存,分步地加载平行集合,让最终返回是实体是完全抓取好的。

本文转载自:http://blog.csdn.net/bluishglc/article/details/5574122

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
MyBatis和Hibernate相比,优势在哪里?

1、开发对比开发速度 hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。 开发社区 Hibernate ...

qq5923dd411b8fa ⋅ 2017/05/23 ⋅ 0

MyBatis和Hibernate相比,优势在哪里?

1、开发对比开发速度 hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。 开发社区 Hibernate ...

park ⋅ 2017/11/28 ⋅ 0

MyBatis和Hibernate优劣势对比

1、开发对比 开发速度 Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。 开发社区 Hibernat...

黎嘉诚 ⋅ 2016/08/05 ⋅ 0

MyBatis和Hibernate相比,优势在哪里?

1、开发对比开发速度 Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。 开发社区 Hibernate ...

vshcxl ⋅ 2016/03/28 ⋅ 0

Hibernate QBC 语言

基本查询 以下是HQL/QBC/Native SQL三种查询策略 HQL策略: Java代码 session.createQuery("FROM Category c where c.name like 'Laptop%'"); session.createQuery("FROM Category c where c......

boonya ⋅ 2015/03/25 ⋅ 0

Hibernate性能优化1( 转)

有很多人认为Hibernate天生效率比较低,确实,在普遍情况下,需要将执行转换为SQL语句的 Hibernate的效率低于直接JDBC存取,然而,在经过比较好的性能优化之后,Hibernate的性能还是让人相当...

九爷 ⋅ 2011/05/14 ⋅ 0

Hibernate中的抓取策略

抓取策略是指我们需要在关联对象间进行导航的时候,Hibernate如何获取关联对象的策略。 select抓取策略:当我们查询某个对象时,hibernate会另外发出一条select语句查询与之关联的实体或者集...

叶欢欢 ⋅ 2016/11/12 ⋅ 0

hibernate N+1问题

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

毅屺 ⋅ 2016/03/20 ⋅ 0

Hernate的优化方案

【IT168 技术文档】 一、批量修改和删除 在Hibernate 2中,如果需要对任何数据进行修改和删除操作,都需要先执行查询操作,在得到要修改或者删除的数据后,再对该数据进行相应的操作处理。在...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Hibernate提升性能

导读:   20.1. 抓取策略(Fetching strategies)   抓取策略(fetching strategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候, Hibernate如何获取关联对...

wsl_Mr ⋅ 2013/07/24 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NFS介绍 NFS服务端安装配置 NFS配置选项

NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导...

lyy549745 ⋅ 7分钟前 ⋅ 0

Spring AOP 源码分析 - 筛选合适的通知器

1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析。本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出合适的通知器(Advisor...

java高级架构牛人 ⋅ 30分钟前 ⋅ 0

HTML-标签手册

标签 描述 <!--...--> 定义注释。 <!DOCTYPE> 定义文档类型。 <a> 定义锚。超链接 <abbr> 定义缩写。 <acronym> 定义只取首字母的缩写。 <address> 定义文档作者或拥有者的联系信息。 <apple......

ZHAO_JH ⋅ 31分钟前 ⋅ 0

SylixOS在t_main中使用硬浮点方法

问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中的浮...

zhywxyy ⋅ 39分钟前 ⋅ 0

JsBridge原理分析

看了这个Github代码 https://github.com/lzyzsd/JsBridge,想起N年前比较火的Hybrid方案,想看看现在跨平台调用实现有什么新的实现方式。代码看下来之后发现确实有点独特之处,这里先把核心的...

Kingguary ⋅ 50分钟前 ⋅ 0

Intellij IDEA神器常用技巧五-真正常用快捷键(收藏级)

如果你觉得前面几篇博文太啰嗦,下面是博主多年使用Intellij IDEA真正常用快捷键,建议收藏!!! sout,System.out.println()快捷键 fori,for循环快捷键 psvm,main方法快捷键 Alt+Home,导...

Mkeeper ⋅ 51分钟前 ⋅ 0

Java 静态代码分析工具简要分析与使用

本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,...

Oo若离oO ⋅ 52分钟前 ⋅ 0

SpringBoot自动配置小记

spring-boot项目的特色就在于它的自动配置,自动配置就是开箱即用的本源。 不过支持一个子项目的自动配置,往往比较复杂,无论是sping自己的项目,还是第三方的,都是如此。刚接触会有点乱乱...

大_于 ⋅ 今天 ⋅ 0

React jsx 中写更优雅、直观的条件运算符

在这篇文字中我学到了很多知识,同时结合工作中的一些经验也在思考一些东西。比如条件运算符 Conditional Operator condition ? expr_if_true : expr_if_false 在jsx中书写条件语句我们经常都...

开源中国最帅没有之一 ⋅ 今天 ⋅ 0

vim编辑模式与命令模式

5.5 进入编辑模式 从编辑模式返回一般模式“Esc” 5.6 vim命令模式 命令 :“nohl”=no high light 无高亮,取消内容中高亮标记 "x":保存退出,和wq的区别是,当进入一个文件未进行编辑时,使...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部