FetchType与FetchMode的差别
使用例:
@OneToMany(mappedBy="item",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@Fetch(value=FetchMode.SUBSELECT)
两者比較:
两者都是设定关联对象的载入策略。前者是JPA标准的通用载入策略注解属性,
后者是Hibernate自有载入策略注解属性。
FetchType可选值意义与差别例如以下:
FetchType.LAZY: 懒载入。在訪问关联对象的时候载入(即从数据库读入内存)
FetchType.EAGER:立马载入。在查询主对象的时候同一时候载入关联对象。
FetchMode可选值意义与差别例如以下:
@ Fetch (FetchMode.JOIN) will use the left join query produced only one sql statement
@ Fetch (FetchMode.SELECT) will have N +1 clause sql statement
@ Fetch (FetchMode.SUBSELECT) produce two sql statement to use the second statement id in (.....) check out all the data associated
@Fetch(FetchMode.JOIN): 始终立马载入,使用外连(outer join)查询的同一时候载入关联对象,忽略FetchType.LAZY设定。
@Fetch(FetchMode.SELECT) :默认懒载入(除非设定关联属性lazy=false),当訪问每个关联对象时载入该对象,会累计产生N+1条sql语句
@Fetch(FetchMode.SUBSELECT) 默认懒载入(除非设定关联属性lazy=false),在訪问第一个关联对象时载入全部的关联对象。会累计产生两条sql语句。且FetchType设定有效。
FetchType与FetchMode的差别的更多相关文章
- FetchType与FetchMode的区别
使用例: @OneToMany(mappedBy="item",cascade=CascadeType.ALL,fetch=FetchType.EAGER) @Fetch(valu ...
- Spring-data-jpa n+1问题
Spring-data-jpa的n+1问题 当我们使用JPA提供给我们的find方法时,如果查询出来的对象关联着另外10个对象,那么JPA将会发送1+10次查询(这个对象本身要查询一次,然后每个关联对 ...
- hibernate 一对多 取多方数据重复问题,FetchMode.JOIN、FetchMode.SELECT、FetchMode.SUBSELECT区别
问题描述:稿件附件表数据时出现多条重复数据. 介绍: 表:稿件实体Manuscripts (数据库表MANUSCRIPTS),稿件附件实体ManuscriptsAtt(表MANUSCRIPTS_ATT ...
- FetchType.LAZY 时属性加上@JsonIgnore,避免返回时报错:Could not write JSON: failed to lazily initialize a collection of role
[示例] @OneToMany(fetch=FetchType.LAZY) @JsonIgnore @Fetch(FetchMode.SELECT) @Cascade(value={CascadeTy ...
- hibernate一对多关系 在一方查询会获得重复数据,重复数量就是多端数据数量用@Fetch(FetchMode.SUBSELECT)解决
先来看数据表 版块表只有两个数据 板块1是推荐,下边没有子栏目 板块2下边有14个子栏目 在1的一端来查询,发现结果有16条 也就是板块1+版块2+版块2和他的14个子集都列出来了,这明显不对 板块对 ...
- ROLAP和MOLAP的概念和差别
ROLAP和MOLAP的概念和差别OLAP(on-Line Analysis Processing)是使分析人员.管理人员或执行人员能够从多角度对信息进行快速.一致.交互地存取,从而获得对数据的更深入 ...
- apt-get upgarde和dist-upgrade的差别
apt-get upgarde和dist-upgrade的差别 apt-get upgarde和dist-upgrade的差别 Debian/Ubuntu Linux都使用apt,升级时都是: ...
- python与ruby的差别
1.引用文件差别 Ruby:同一目录下的文件,如/usr/local/ruby/foo.rb与/usr/local/ruby/bar.rb两个文件.如果直接在foo.rb中 require 'bar' ...
- 【转】responseText,responseBody,responseXML差别
为了做ajax的代理,研究了下服务器端的xmlhttp和客户端ajax中的xmlhttp,做了个比较 由于我一直使用JavaScript作为Asp的教本语言,所以比较起来更清楚.服务器端的xmlhtt ...
随机推荐
- 爬虫—分析Ajax爬取今日头条图片
以今日头条为例分析Ajax请求抓取网页数据.本次抓取今日头条的街拍关键字对应的图片,并保存到本地 一,分析 打开今日头条主页,在搜索框中输入街拍二字,打开开发者工具,发现浏览器显示的数据不在其源码里面 ...
- 前端分页功能实现(PC)
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>加 ...
- Docker 内部之间的网络连接
一.简介 内部网络连接的2中方式: Docker NetWorking (1.9版本之后推荐使用这个)和 Docker link(1.9 版本之前都使用这个) 推荐使用docker networkin ...
- Linux运维最佳实践之网站调优
高性能静态网站: 1.静态页面中针对图片进行浏览器(客户端)缓存,如公共JavaScript(jQuery,jQuery-1.12.1.min.js)进行缓存 2.对网站输入内容压缩(gzip) 3. ...
- 得到Xml中 元素的值
<?xml version="1.0" encoding="utf-8" ?><Response service="RouteSer ...
- how does Array.prototype.slice.call() work?
763 down vote accepted +50 What happens under the hood is that when .slice() is called normally, thi ...
- C#多线程(Thread)开发基础
除非另有说明,否则所有的例子都假定以下命名空间被引用: using System; using System.Threading; 1 基本概念 在描述多线程之前,首先需要明确一些基本概念. ...
- PostgreSQL 满足条件时插入数据
例如:当表中不存在某记录时,才插入这条记录. INSERT INTO 表名(列名1, 列名2) SELECT '值1', '值2' WHERE NOT EXISTS ( SELECT * FROM 表 ...
- ubuntu安装-Caffe依赖
参考链接:http://my.oschina.net/u/939893/blog/163921 1. 安装numpy相对简单,以下命令可以完成 apt-get install python-numpy ...
- PythonOpencv-分类器—SVM,KNearest,RTrees,Boost,MLP
原文链接:http://blog.csdn.net/gjy095/article/details/9243153 上一篇文章,不是很详细,这一篇解释的清晰些,请访问原始链接. Rtrees介绍!参考链 ...