00:00
好,然后咱们刚才说的这个my be,它的一个分布查询,它是有优势的,那它有什么样的一个优势呢?它的优势呢,其实就是一个延迟加载的问题,来咱们把笔记给打开,然后我们来找到咱们的这个延迟加载的一个介绍啊,然后咱们应该是在这个位置啊,然后在一对多的映射处理下面啊,大家注意。分布查询的优点,可以实现延迟加载。啥叫延迟加载?他也叫做懒加载。也就是说我们现在咱们的分布查询里面,我们是通过两个SQ去把咱们所需要的数据查询出来的,对吧?好,然后那如果我们现在咱们有没有一种可能,我现在我是只需要获取咱们当前的员工信息,而我暂时不需要获取部门信息。那这个时候咱们用了分布查询之后,它的优点就是如果你只查,如果我们开启了延迟加载之后啊,你获取员工信息,那它就只执行查询员工的SQ,而如果说我们现在咱们没有获取部门信息,那他就不会执行查询部门的Q。
01:05
这个大家注意,那这个时候大家想想是不是就可以减少我们当前内存的一个消耗,对不对,好啊行,那下面呢,我们来看一下,那我们要想实现延迟加载的话,那我们必须得去开启延迟加载的功能,怎么来开启呢?它跟我们当前的两个全局配置有关,首先第一个叫做lazy loading enable的,第二个叫做aggressive lazy loading,大家注意一共是这两个啊,首先第一个叫做开启延迟加载啊,然后呢,咱们去大家可以看一下咱们的官方文档,你看就在这个位置啊,来在settings里面对吧,Lady loading enable默认值为force,默认默认开启不开启,不开启。然后咱们必须把它设置为true,然后才会有效果,OK吧,才会有效果,然后才是开启了懒加载,开启了延迟加载的效果,来下面大家看啊,咱们直接把这个东西啊给复制过来,放在我们当前的核心配置文件中,咱们直接把它给写到这儿。
02:05
然后这个name应该叫lady loading enable,然后这个value的话默认为false,默认不开启,那我们现在咱们这个把它给设置为true就可以啊,然后下面咱们就可以来做一个例子,这东西是干什么的?叫做开启延迟加载。好,然后下面咱们来进行一个测试,比如说我现在我要干什么,我emp点叫做get点,大家来看咱们叫做get EP name,我现在我有没有去获取这个员工所对应的部门啊,没有,我就获取了一个员工,他本身的一个员工姓名对不对?那我现在当我再来执行的时候,大家看你看啊,他会不会把我们当前员工和部门的circle都执行出来呢?你看是不是就只执行了一个员工的circle啊?有没有执行部门的没有,你看我把这个标签咱们给他干掉,现在我再来一个执行,我同样是查这个员工的员工姓名,但是你看他执行的几个circle,两个circle把员工也查出查,查询出来了,把员工所对应的部门是不是也给查询出来了,OK吧,这就是我们当前延迟加载的一个好处。
03:13
当然在这呢,大家注意,我们要想开启延迟加载的话,这一个属性确实可以开启,但是它还跟咱们的另外一个属性有关,叫什么叫aggressive lady load这东西是什么意思?叫做按需加载,叫做按需加载,然后大家来看一下它的默认值啊,默认值为false,然后这个东西的话,如果你要设置为true是什么意思,大家要听好啊,如果你要设置为true的话,它表示的是完整加载,什么叫完整加载?就不管你有没有开启延迟加载,我们当前只要是来获取我们的,你比如说咱们的分布查询,我不管你有没有获取部门信息,部门的S口都会执行。知道吧,然后但是我们现在咱们把它给设置为副词的时候,就表示的是什么叫做按需加载,我们需要什么它就加载什么,当然这个东西默认值就是false,所以说大家可以不设置,但是呢,我建议大家呀。
04:12
对不对,然后如果我们要用的话,我建议大家把这个东西啊给它写上,为什么把它给写上呢?因为大家一定要知道这个东西,它那我们要想开启延迟加载跟这一个属性,是跟这两个属性有关系,而不是只跟这一个属性有关的,知道吧,好,然后大家注意,你把它设置为处,大家试一下啊,你看我现在开启了延迟加载,我现在又开启了时,我现在是不是又把咱们的按需加载设置为处,我说过设置为处的意思是啥?就是我当前我不管我要获取的有没有部门信息,员工和部门的SQ都会执行,大家看是不是。能看懂吧,所以说你要把它设置为什么呀,要把它设置为false才有效果,这才是按需加载的意思,然后下面我们在这再来一个执行,大家看啊好,我们现在获取的只有员工,所以说现在执行的SQL去是不是也只有一个员工的SQ啊,对不对,所以大家看好,然后如果我们要只实现功能的话,其实咱们只需要开启延迟加载就行,但是我希望大家一定要注意,它是跟咱们当前的这两个全局配置有关,而不是跟这一个配置有关的啊。
05:21
好,这个是干嘛,叫做按需加载,叫做按需加载OK啊。行。OK,这是咱们的一个延迟加载的问题,好,然后但是大家想啊,你说我现在啊,我把这两个东西给配置上之后啊,然后我们当前咱们这是不是这叫什么配置,叫全局配置,那所以说它是对咱们买be里面所有的分布查询都有效果的,那如果我们现在呢,咱们有一个分布查询,我不需我不想让它来实现这个延迟加载,也就是说我们根据自己的需求,我现在是一次性要把咱们所有的数据都查询出来的。
06:02
大家说这个时候你能做吗?他这个时候他能实现这个把所有数据全部查询出来的效果吗?实现不了啊,为什么?你这叫全局配置,是针对于买杯里面所有的功能来,是所有的分布查询来实现的,知道吧,所以说我们当前的每一个分布查询,它都会有这个延迟加载的功能,也就是说你把这个设置完成之后,你获取什么数据,那我们当前就只会执行这个SQL语句。他会不会把有的circle都执行一下,然后把所有的数据都获取出来,不会啊,那这个时候呢,那大家想想,因为它是全局加载,因为它是全局配置,所以是针对于所有的分布查询的,那这个时候如果我们要想让咱们的某一个分布查询来实现完,来实现一个完整的加载,这个时候怎么办?大家看好,找到我们当前的这个association标签,也就是实现分布查询的地方,大家注意,这里面有个属性叫做fat type。
07:01
干什么的来设置当前的分布查询为立即加载或延迟加载,Lazy叫做延迟加载,E叫做立即加载,大家看好啊,我现在我的所有的配置都没有任何变化,我现在再来一个执行。好,大家看一下,你看现在执行的是几个circle,两个circle,所以说这个飞机type就是干嘛的,在我们开启了延迟加载的环境中,然后我们可以来指定咱们的某一个分布查询为延迟加载或立即加载。OK吧,好在这咱们把它给写出来啊,飞tap干什么的,然后在咱们开启了,在咱们开启了延迟加载,延迟加载的环境中环境中,对吧,然后啊,通过该属性啊,通过该属性,然后来设置当前。
08:00
的分布查询啊分布查询,然后是否使用延迟加载。OK,这样的啊,然后呢,它一共有两个值,Fach type1共有两个值,首先第一个值叫做EAE,还有一个叫做lady啊,然后E我就直接在这里面写了啊,大家看好这叫什么,立即加载。然后这个叫什么延迟加载,延迟加载OK啊,行,这是我们当前咱们的一个分布查询的好处啊,它的好处就是延迟加载,但是大家要知道该如何开启,知道吧,该如何开启,然后呢,我们又该针对于在咱们又该如何针对于某一个具体的分布查询,在你开启了延迟加载的环境中,然后如何去设置它的立即加载或延迟加载OK吧,行啊,这是咱们的一个延迟加载的问题啊好。
我来说两句