hql抓取要注意的点
fetchtype是lazy,那就用到了在通过缓存中的关联去取,用不到不取;lazy遇到joinfetch就失去意义,但是由于hql语句是自己编写的,可以控制加不加fetch 所以如果主力是hql语句,可以考虑lazy+hql的组合
多取一,fetchtype是eager,HQL一定要加fetch,因为不加的话即使用不到关联对象也会一次取出,而且还发出很多条语句;
HQL查询的时候一定要和sql语句结合在一起考虑问题,时刻考虑到缓存,就会很容易明白一个HQL会去数据库查询几次。
两个表(或者两个对象)join完之后,再取对象还是数据,要看join完之后的表示啥样的,就可以知道取出来是什么了,一般是用innerjoin,特殊情况下要保留某一个表的多余数据可以考虑right或者leftjoin
语句中只有join,不一定会取关联对象,或者叫被join的对象;而加了fetch,那么就是把整张表的数据全按照对象的格式取出来放到缓存中。
joinfetch的时候select的对象一定是主join的那个对象
多对一用fetchtype.eager之后,一的那方不要再用eager了,不然回头再取一次多的一方一次。
分页的时候要用count(*)取总数,所以这时候要把hql语句中的fetch替换掉。
fetchmode=subselect 用于从一的一方关联取多的一方,用不到不取,用到了用嵌套取,一次把几个组的全取出来。而不是像lazy或者eager那样一个组一个组的取,语句少,较智能。几个组的一取多,也分是几个组的一起取还是一个组一个组去,这就是用不用subselect的区别。
batchsize 只在从"多"的一方取"一"的一方有效,在一的一方标注一次取多少。因为从一的一方取,不管下属多少条都会一下取出来,不会说一个group有30条user,但是先取29个再取1个这样的,只会一次getUsers把所有User取出来。
在注解模式中,fetchmode 和fetchtype 除去subselect,其实是逻辑或的关系,只要两者中有一个是eager或者join,那么就是一次关联抓取。
hql抓取要注意的点的更多相关文章
- 【Java EE 学习 48】【Hibernate学习第五天】【抓取策略】【二级缓存】【HQL】
一.抓取策略. 1.hibernate中提供了三种抓取策略. (1)连接抓取(Join Fetch):这种抓取方式是默认的抓取方式.使用这种抓取方式hibernate会在select中内连接的方式获取 ...
- 【Hibernate 8】Hibernate的调优方法:抓取策略
在上一篇博客中,介绍了Hibernate的缓存机制.合理的配置缓存,可以极大程度上优化Hibernate的性能.这篇博客,介绍另外一个调优方式:抓取策略. 一.什么是抓取策略 抓取策略(fetchin ...
- 029 hibernate抓取策略
实例A引用实例B,B如果是代理的话(比如多对一关联中):如果遍历A的查询结果集(假设有10条记录),在遍历A的时候,访问B变量,将会导致n次查询语句的发出!这个时候,如果在B一端的class上配置ba ...
- Hibernate框架笔记04HQL_QBC查询详解_抓取策略优化机制
目录 1. Hibernate的查询方式 1.1 方式一:OID查询 1.2 方式二:对象导航查询 1.3 方式三:HQL方式 1.4 方式四:QBC查询 1.5 方式五:SQL查询 2. 环境搭建 ...
- hibernate框架学习之数据抓取(加载)策略helloworld
package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Query; import org.hibern ...
- hibernate框架学习之数据抓取(加载)策略
Hibernate获取数据方式 lHibernate提供了多种方式获取数据 •load方法获取数据 •get方法获取数据 •Query/ Criteria对象获取数据 lHibernate获取的数据分 ...
- Hibernate 抓取策略
抓取策略: 为了改变SQL语句执行的方式 当应用程序需要在Hibernate实体对象的关联关系间进行导航的时候,Hibernate如何获取关联对象的策略 抓取策略可以在O/R映射的元数据中声明,也可以 ...
- hibernate的延迟加载和抓取策略
一,延迟加载 1.实体类延迟加载 通过代理机制完成,由javassist类库实现运行时代理,修改实体类的字节码实现了运行时代理 <class lazy="true|false& ...
- Hibernate fetching strategies(抓取策略)
抓取策略(fetching strategies)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略.抓取策略可以在O/R映射的 ...
随机推荐
- mybatis generator
http://blog.csdn.net/sunny243788557/article/details/45166397 http://www.cnblogs.com/smileberry/p/414 ...
- xcode5 python 开发环境
在xcode5 下配置 python开发环境 1:默认mac下已经集成了python的开发库,先找到集成的python库的目录 终端 which python 记下当前的python 路径 /usr/ ...
- linux笔记:压缩解压命令gzip,gunzip,tar,zip,unzip,bzip2,bunzip2
命令名称:gzip功能:压缩文件命令所在路径:/bin/gzip用法:gzip 文件压缩后文件格式:.gz其他:压缩后不保留原文件:只能压缩文件,不能压缩目录 命令名称:gunzip功能:解压.gz格 ...
- VBA对象模型(2)
Excel对象模型简介 在介绍Excel对象模型之前,让我们先来看一个简单的例子.大多数工厂都是按这样的结构进行设置的:最上层为工厂总部,第二层次分为各个车间,在车间下面又分各班组.就这样组织在一起, ...
- HTML5自学笔记[ 16 ]canvas绘图基础3
canvas还提供提供了一些动态方法,使图像可以旋转.缩放和移动,与css3中的方法一样. 移动:translate(x,y),x和y为横竖方向的偏移量 旋转:rotate(弧度),弧度=角度*Mat ...
- HTML5自学笔记[ 10 ]简单的购物车拖拽
用html5拖拽功能实现了一个简单的购物车,样式简陋,得学学画画提高下审美了T^T: <!doctype html> <html> <head> <meta ...
- GIT命令(急速学习)
用过sourceTree,egit(eclipse中的git插件),最后还是感觉git bash顺手:svn早已经不用: 先上几个原来看过的git 教程--书读百遍,其义自见.多看几篇文章才能总结 ...
- Java JDK的安装以及环境变量的配置
安装并配置完Android SDK之后,本想着可以做个简单的APP应用了,只是依然提示我“请确认Java JDK是否安装”类似的报错,于是又进行了Java JDK的安装以及环境变量的配置. 1.下载地 ...
- Sumblime Text2安装Package Control两种方法+安装插件+注册码
刚开始不认识sumblime的时候,就直接在网上下载了一个最新版的sumblime text3,只是在配合使用go语言时,出现了一些不为自己知道的奇葩问题,于是果断把3卸载了,改成了sumblime ...
- mysql创建PATH快捷
1.使其临时生效 PATH=$PATH:/usr/local/mysql/bin 2.永久生效 编辑/etc/profile 添加第79列 然后source /etc/profile 3.输入命令m ...