hibernate_06_hibernate的延迟加载和抓取策略
1.延迟加载
1>类级别的延迟加载
指的是通过oad方法查询某个对象的时候,是否采用延迟, session. load(Customer class1L)
类级别延迟加载通过<class></class>上的laxy进行配置,如果让lazy失效
<class name="com.work.entity.Customer" table="cst_customer" lazy="true">
◆将lazy设置为 false.
◆将持久化类使用fna修饰
◆ Hibernate. Initialize()方法
2>关联级别的延迟加载
指的是在查询到某个对象的时候,查询其关联的对象的时候,是否采用延迟加载。
Customer customers=session. get( Customer.class, 1L)
customer. getlinkman0()一通过客户获得联系人的时候,联系人对象是否采用了延迟加载,称为是关联级别的延迟。
抓取策略往往会和关联级别的延迟加载一起使用,优化语句。
2.抓取策略的概述
1>抓取策略的通过一个对象抓取到关联对象需硬发送SQL语句,SOL语句如何发送,发送成什么样格式通过策略进行配置。
通过<set>或者< many-to-one>上通过 fetch属性进行设置fetch和这些标签上的lary如何设置优化发送的saL语句
<set>上的 fetch和layfetch
2>fatch抓取策略,控制SOL语句格式:(fatch控制发送语句的格式)
select :默认值,发送普通的 select语句,查询关联对象
join:发送一条迫切左外连接查询关联对象
subselect:发送一条子查询查询其关联对象
3>lazy延迟加载,控制查询关联对象的时侯是否采用延迟(lazy控制的是发送语句的时间)
true:默认值,查询关联对象的时候,采用延迟加载
false:查询关联对象的时候,不采用延迟加载
extra:及其懒情。(用到什么数据查询什么数据)
<---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
<many-to-one>上的 fetch和layfetch
1>fatch抓取策略,控制SOL语句格式:(fatch控制发送语句的格式)
select :默认值,发送普通的 select语句,查询关联对象
join:发送一条迫切左外连接查询关联对象
2>lazy延迟加载,控制查询关联对象的时侯是否采用延迟(lazy控制的是发送语句的时间)
proxy:默认值,proxy的值取决于另一端<classs>lazy=""</class>lazy的值
false:查询关联对象的时候,不采用延迟加载
在开发中一般使用默认值:特殊情况下可能使用join
3.批量抓取策略
当我们关联查询所有客户以及所有客户下的所有联系人时会发送大量的查询语句,此时可以使用批量抓取策略
1>设置batch-size="4" 一次抓取的数据
<set name="linkMans" cascade="save-update,delete" batch-size="4" >
设置抓取策略之后(2条查询语句)


hibernate_06_hibernate的延迟加载和抓取策略的更多相关文章
- hibernate的延迟加载和抓取策略
一,延迟加载 1.实体类延迟加载 通过代理机制完成,由javassist类库实现运行时代理,修改实体类的字节码实现了运行时代理 <class lazy="true|false& ...
- hibernate 延迟加载和抓取策略
一.延迟加载 1.简单查询get,load 针对对象本身延迟或即时 当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当我们使用session.load ...
- 【转】hibernate延迟加载和抓取策略
一.延迟加载 1.简单查询get,load 针对对象本身延迟或即时 当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当我们使用session.load ...
- 十、hibernate的延迟加载和抓取策略
延迟加载:控制sql语句发送时机 抓取策略:控制sql语句格式,子查询.连接查询.普通sql 延迟加载 延迟加载(lazy),也叫做懒加载:执行到该行代码时,不发送sql进行查询,只有在真正使用到这个 ...
- Hibernate框架笔记04HQL_QBC查询详解_抓取策略优化机制
目录 1. Hibernate的查询方式 1.1 方式一:OID查询 1.2 方式二:对象导航查询 1.3 方式三:HQL方式 1.4 方式四:QBC查询 1.5 方式五:SQL查询 2. 环境搭建 ...
- Hibernate之加载策略(延迟加载与即时加载)和抓取策略(fetch)
假设现在有Book和Category两张表,表的关系为双向的一对多,表结构如下: 假设现在我想查询id为2的那本书的书名,使用session.get(...)方法: Session session=H ...
- 八 Hibernate延迟加载&抓取策略(优化)
面试:Hibernate效率很低,如何优化? 缓存怎么弄的,语句怎么优化? 聊聊一级缓存,聊聊抓取策略和延迟加载,聊聊批量抓取 延迟加载: 一般不单独使用,和延迟加载一起使用 延迟加载:lazy(懒加 ...
- 【Hibernate 8】Hibernate的调优方法:抓取策略
在上一篇博客中,介绍了Hibernate的缓存机制.合理的配置缓存,可以极大程度上优化Hibernate的性能.这篇博客,介绍另外一个调优方式:抓取策略. 一.什么是抓取策略 抓取策略(fetchin ...
- 029 hibernate抓取策略
实例A引用实例B,B如果是代理的话(比如多对一关联中):如果遍历A的查询结果集(假设有10条记录),在遍历A的时候,访问B变量,将会导致n次查询语句的发出!这个时候,如果在B一端的class上配置ba ...
随机推荐
- Shell 编程综合案例
Shell编程综合案例 Shell也学习了大概的知识,现在这篇文章就大概讲述下如何使用shell编写一个脚本呢?下面就展示一个大家常用的数据库备份案例来进行展示. 需求分析 1)每天凌晨2:10分备份 ...
- 【单调队列优化】[CF372C] Watching Fireworks is Fun
突然发现我可能单调队列都打不来了...我太菜了... 这道题显然有$$f[i][j]=min\{f[i-1][k]+\vert j-a[i] \vert\}$$ 则$ans=\sum_{i=1}^{m ...
- Python全栈开发:Javascript
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...
- CentOS 7 編譯qBittorrent Web UI安裝指南
前言 以下是安装qBittorrent教学. 适用于CentOS7或更新版本 适用于qBittorrent4.1.5或更新版本 安裝須知 qBittorrent基于libtorrent,所以必须先安装 ...
- c++ TCP 获取客户端IP
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<errno.h> #i ...
- PHP ftp_raw() 函数
定义和用法 ftp_raw() 函数向 FTP 服务器发送一个 raw 命令. 语法 ftp_raw(ftp_connection,command) 参数 描述 ftp_connection 必需.规 ...
- JavaScript中的函数柯里化与反柯里化
一.柯里化定义 在计算机科学中,柯里化是把 接受多个参数的函数 变换成 接受一个单一参数(最初函数的第一个参数)的函数 并且返回 接受余下参数且返回结果的新函数的技术 高阶函数 高阶函数是实现柯里化的 ...
- easyUI tabs 显示与隐藏 tab 页
隐藏: tab_option = $('#tabs').tabs('getTab'," 单位信息 ").panel('options').tab; tab_option.hide( ...
- Java-javaFx库运用-时钟显示
JavaFx是开发Java GUI程序的新框架.JavaFX应用可以无缝地在桌面或web浏览器中运行.具有内建的2D.3D动画支持,以及视频和音频的回放功能,可以作为一个应用独立运行或者在浏览器中运行 ...
- A1075 PAT Judge (25 分)
The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...