文档章节

Hibernate的四种抓取策略

猪刚烈
 猪刚烈
发布于 2014/10/12 11:47
字数 415
阅读 12
收藏 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 ...

park
2017/11/28
0
0
MyBatis和Hibernate优劣势对比

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

黎嘉诚
2016/08/05
88
0
MyBatis和Hibernate相比,优势在哪里?

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

vshcxl
2016/03/28
41
0
MyBatis和Hibernate相比,优势在哪里?

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

qq5923dd411b8fa
06/26
0
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
0

没有更多内容

加载失败,请刷新页面

加载更多

初探Spring Cloud(一)

1. 什么是Spring Cloud? Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,...

__HuWei
20分钟前
1
0
Mac配置ssh免密钥登录

Mac终端每次使用ssh -p 22 user@ip登录很是麻烦,下面介绍配置ssh免密钥登录: cd ~/.ssh下创建conf文件,写入以下配置: Host test HostName ip Port 22 IdentityFile /Users/t/key/test.p...

littlemesieV
35分钟前
1
0
Spark2.0操作ES

ES提供了支持包来方便的操作ES。首先添加ES的依赖maven: <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-spark-20_2.11</artifactId> <version>6.2.0</ver......

守望者之父
37分钟前
1
0
专业术语

1、防御性编程 DruidDataSource类有一个init方法,我们在spring中配置druid时,都会指定 init-method='init'. 而且DruidDataSource也在其他地方,诸如getConnection()方法里作了防御性编程, 也就...

still5656
39分钟前
1
0
微信开发--测试账号相关

1、微信公众平台选择代码开发后,其平台上的部分功能会不可用 可在开发者工具中选择开通测试账号,进行相关的功能调试(测试账号出微信支付不可调试外,其他功能基本上都可以调试) 2、测试账号...

Code辉
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部