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 ...
随机推荐
- Arrays 001
1.1 Array Initalization First of all, we need know Java arrays is static. When the array is initiali ...
- shell command to replace UltraEdit
cat abc.txt |hexdump -C cat abc.txt |hexdump -C
- vue之自定义指令
1.自定义指令的作用 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的情况下,你仍 ...
- Jenkins忘记 admin 密码
进入 jenkins home(我的是/var/jenkins_home)路径下的users 文件夹 cd /var/jenkins_home/users sudo vim admin/config. ...
- centos7 dns(bind)安装配置
yum install -y bind bind-chroot bind-utils chroot是通过相关文件封装在一个伪根目录内,已达到安全防护的目的,一旦程序被攻破,将只能访问伪根目录内的内容, ...
- delphi Sqlite
Delphi中SQLite如何读写二进制字段(Blob类型) 在Delphi中,有大量的组件可以操作SQLite数据库,如UniDAC就是其中一个比较优秀的,当然还有ASQLite3Component ...
- NX二次开发-UFUN设置环境变量UF_set_variable
NX9+VS2012 #include <uf.h> #include <stdio.h> UF_initialize(); //UFUN方式 //设置环境变量 int a = ...
- NX二次开发-UFUN替换组件UF_ASSEM_use_alternate
NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_assem.h> #include <u ...
- css Sticky footers
写在前面 做过网页开发的同学想必都遇到过这样尴尬的排版问题:在主体内容不足够多或者未完全加载出来之前,就会导致出现(图一)的这种情况,原因是因为没有足够的垂直空间使得页脚推到浏览器窗口最底部.但是,我 ...
- 黑科技之杜教bm
这个板子能够解决任何线性递推式,只要你确定某个数列的某项只与前几项线性相关,那么把它前若干项丢进去,这个板子就能给你返回你要求的某项的值. 原理???(待补充) #include<bits/st ...