Hibernate的抓取策略(优化)
延迟加载的概述
什么是延迟加载
延迟加载:lazy(懒加载)。执行到该行代码的时候,不会发送语句去进行查询,在真正使用这个对象的属性的时候才会发送SQL语句进行查询。
延迟加载的分类
l 类级别的延迟加载
n 指的是通过load方法查询某个对象的时候,是否采用延迟。session.load(Customer.class,1l);
n 类级别延迟加载通过<class>上的lazy进行配置,如果让lazy失效
u 将lazy设置为false
u 将持久化类使用final修饰
u Hibernate. Initialize()
l 关联级别的延迟加载
n 指的是在查询到某个对象的时候,查询其关联的对象的时候,是否采用延迟加载。
Customer customer = session.get(Customer.class,1l);
customer.getLinkMans();----通过客户获得联系人的时候,联系人对象是否采用了延迟加载,称为是关联级别的延迟。
n 抓取策略往往会和关联级别的延迟加载一起使用,优化语句。
抓取策略
抓取策略的概述
l 通过一个对象抓取到关联对象需要发送SQL语句,SQL语句如何发送,发送成什么样格式通过策略进行配置。
n 通过<set>或者<many-to-one>上通过fetch属性进行设置
n fetch和这些标签上的lazy如何设置优化发送的SQL语句
<set>上的fetch和lazy
l fetch:抓取策略,控制SQL语句格式
n select :默认值,发送普通的select语句,查询关联对象
n join :发送一条迫切左外连接查询关联对象
n subselect :发送一条子查询查询其关联对象
l lazy:延迟加载,控制查询关联对象的时候是否采用延迟
n true :默认值,查询关联对象的时候,采用延迟加载
n false :查询关联对象的时候,不采用延迟加载
n extra :及其懒惰。
l 在实际开发中,一般都采用默认值。如果有特殊的需求,可能需要配置join。
<many-to-one>上的fetch和lazy
l fetch :抓取策略,控制SQL语句格式。
n select :默认值,发送普通的select语句,查询关联对象。
n join :发送一条迫切左外连接。
l lazy :延迟加载,控制查询关联对象的时候是否采用延迟。
n proxy :默认值,proxy具体的取值,取决于另一端的<class>上的lazy的值。
n false :查询关联对象,不采用延迟。
n no-proxy :(不会使用)
l 在实际开发中,一般都采用默认值。如果有特殊的需求,可能需要配置join。
批量抓取
什么是批量抓取
一批关联对象一起抓取,batch-size
测试批量抓取

Hibernate的抓取策略(优化)的更多相关文章
- Hibernate框架笔记04HQL_QBC查询详解_抓取策略优化机制
		目录 1. Hibernate的查询方式 1.1 方式一:OID查询 1.2 方式二:对象导航查询 1.3 方式三:HQL方式 1.4 方式四:QBC查询 1.5 方式五:SQL查询 2. 环境搭建 ... 
- 八  Hibernate延迟加载&抓取策略(优化)
		面试:Hibernate效率很低,如何优化? 缓存怎么弄的,语句怎么优化? 聊聊一级缓存,聊聊抓取策略和延迟加载,聊聊批量抓取 延迟加载: 一般不单独使用,和延迟加载一起使用 延迟加载:lazy(懒加 ... 
- Hibernate之抓取策略
		时间:2017-1-23 19:08 --区分延迟和立即检索1.立即检索 当执行某行代码时,会马上发出SQL语句进行查询. 例如:get()2.延迟检索 当执行某行代码时,不会马上发 ... 
- Hibernate的抓取策略
		立即检索:当执行某行代码的时候,马上发出SQL语句进行查询(get())延迟检索:当执行某行代码的时候,不会马上发出SQL语句进行查询.当真正使用这个对象的时候才会发送SQL语句(load()) 类级 ... 
- Hibernate学习第4天--HQL——QBC查询详解,抓取策略优化。
		上次课回顾: l Hibernate的一对多 n 表与表之间关系 u 一对多关系 u 多对多关系 u 一对一关系 n Hibernate的一对多配置 u 搭建Hibernate基本环境 ... 
- 【Hibernate】抓取策略
		一.区分延迟和立即检索 二.类级别检索和关联级别检索 一.区分延迟和立即检索 立即检索: 当执行某行代码的时候,马上发出SQL语句进行查询. get() 延迟检索: 当执行某行代码的时候,不会马上发出 ... 
- 【Hibernate 8】Hibernate的调优方法:抓取策略
		在上一篇博客中,介绍了Hibernate的缓存机制.合理的配置缓存,可以极大程度上优化Hibernate的性能.这篇博客,介绍另外一个调优方式:抓取策略. 一.什么是抓取策略 抓取策略(fetchin ... 
- Hibernate(十四)抓取策略
		抓取策略: 抓取策略是当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略.Hibernate的抓取策略是Hibernate提升性能的一 ... 
- Hibernate   抓取策略
		抓取策略: 为了改变SQL语句执行的方式 当应用程序需要在Hibernate实体对象的关联关系间进行导航的时候,Hibernate如何获取关联对象的策略 抓取策略可以在O/R映射的元数据中声明,也可以 ... 
随机推荐
- up6-自定义文件存储路径
			在up6.2中有两种保存模式,一种是md5一种是uuid. md5由PathMd5Builder生成存储路径.md5主要提供给文件使用,可在服务器端保存唯一的文件,有效避免重复文件. uuid由Pat ... 
- 编写高质量代码改善C#程序的157个建议——建议95:避免在构造方法中调用虚成员
			建议95:避免在构造方法中调用虚成员 在构造方法中调用虚方法会带来一些意想不到的错误,虽然这种方法不常见,但还是需要注意这类陷阱. static void Main() { American amer ... 
- 创建Jutil (单元测试)
			如何创建JUtil 这里拿Dynamic项目来演示,首先创建一个Dynamic项目,起名,点next, 继续点next, 将web.xml文件勾选,finish, 接下来在Java Resources ... 
- 7z文件格式及其源码的分析(二)
			这是第二篇, 第一篇在这里: 这一篇开始分析7z的源码结构. 一. 准备工作: 1. 源码下载: 可以从官方中文主页下载:http://sparanoid.com/lab/7z/. 为了方便, 这里直 ... 
- New Year, New Devs: Sharpen your C# Skills
			At the beginning of each new year, many people take on a challenge to learn something new or commit ... 
- .netcore 与 Docker
			CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ... 
- Android 打开URL中的网页和拨打电话、发送短信功能
			拨打电话需要的权限 <uses-permission android:name="android.permission.CALL_PHONE"/> 为了省事界面都写一起 ... 
- BZOJ3638|CodeForces 280D k-Maximum Subsequence Sum
			题目链接:戳我 一类典型模型.线段树模拟网络流+区间最大K段和. 因为不会写,所以参考了黄学长的博客.但是我觉得他说得不够详细,所以想好好地解释一下: 前置技能1:区间最大子段和 如果K=1的时候怎么 ... 
- 获取请求 header 中指定字段的值
			private function getHeader($name) {//获取请求头中$name的值 $name = 'HTTP_' . $name; foreach ($_SERVER as $ke ... 
- [AGC006E] Rotate 3x3 树状数组+贪心
			Description  XFZ在北京一环内有一套房.  XFZ房子的地砖呈网格状分布,是一个3∗N3∗N的网格.XFZ在买下这套房时,每个地砖上有一个数字,位置为(i,j)(i,j)的地砖上的数 ... 
