00:00
下边呢,我们来看这个双向多对一的关联关系。要说一下双向多对一跟。双向一对多是一回事,对吧。从左看就是多对一,从右看就是一对多,双向的不就一样吗?我们首先。Customer里边已经有了这个order这个集合属性。把这个打开。这个也打开。Ctrl shift o好了,这样的话呢,这个双向关系就搞定了,需要注意的是两边这个外键列的列名需要一致,CID。这个也叫customer ID,这就可以了,我们还是把这张数据表给他删除。然后呢?
01:00
找到测试。我们就用之前这个save方法吧。设定关联关系这块复杂一点,我们还可以设ORDER1SET customer order two set customer。然后就OK了吧。好了,我来问大家,这个说我要是保存的话,它会怎么样?首先能保存成功是吧。这没啥问题。第二个。会发送多少条语句呢?这叫ZZ。YY,对,也就YY吧。拿过来,我们看一眼它。没有对应的这个数据是吧,来我先执行一个保存,看一下语句的情况。什么情况?INSERT3个,Update几个?
02:03
四个吧。发了四条update,但是保存这是可以成功的。11 YY。F5过来,这是OK的。好了,它为什么会多出四条update呢?说。若是双。向双。像一对多的。关联关系。执行保存时,若先保存。多的一段吧,对吧,多的一段再保存。一一段默认情况下。
03:00
会多出四条update语句。能理解这个为什么吧,Harmlet的时候我们详细的说过,因为这个时候呢,两边都维护关联关系,就是说这个时候你先保存的是order。那么先保存order的话。我们看看我们对应的这个。SQ语句,你看这个时候呢,他尝试着往里边插这个卡ID,但遗憾的是这个时候这个卡是不是还没有执行保存呢?他根本就不知道ID是多少。所以说这个时候,嗯,实际上这个列是空好了,然后的话呢,我插入了卡之后order order看到了,诶。卡进去了哈,这个时候我能够有这个卡ID了,于是从order这一方维护一次关联关系两条。
04:04
Update语句。修改那个外键吗。然后卡通本身也要去维护关联关系,诶我再发两条,所以说一共是四条ABC语句,很显然这个是非常非常不好的,那若先保存一的一端呢,则。会多出几条啊。照这个里边两条update语句吧,这里边儿我们说是N条好一些。是吧?会多出N条update语句。那么我们再来看一下,我把这个顺序给它调一下,就这个时候怎么了,这个时候这个特点就是卡先插入的,再往里边去插al,这个时候al关联那个卡ID已经有了。
05:03
所以说所以说outdoor在插入。Out,在插入这个记录的同时,那个外键维护关系已经完成了,然后卡需要再维护一遍。所以说这个时候是多。多几条啊,多两条对吧。大家看这个时候呢,会多出两条UPDATE1条两条对吧,多两条update过来看。结果是没问题的。好的,那么我们建议什么呀,在进行。双向。项一对多关联关系时,建议使用多的一方来维护关联关系,而一的一方。
06:22
不为虎。关联关系。对啊,会。有效的减少。思语句这个呢,讲harm的时候,我们举过一个例子。由多的一方维护关联关系会提升性能。为什么呢?比方说我们都知道习大大。国家主席习近平是吧,但习大大不可能记住13亿的人,但是我们靠我们去维护这个关联关系,这个关系也是很牢靠的,对吧,如果你要是靠习大大自己去维护的话。
07:08
他怎么能够记住十十三亿人呢啊,男女身高长相记不住。对吧?但我们去维护这个关联关系,它就特别的有利于提升效率。那我如何来让。一的一端放弃维护呢?找到customer过来放弃维护关联关系,看一下map by。我不维护了,我有。我有。多的一方来维护,我由多的一方的customer去维护是吧。好,这样的话就不会多出额外的update。我直接跑了哈,走。这个时候我们发现什么呀,没成功是吧,为什么呀。
08:01
这个书失败了。我们看一,我们把这个异常给它拷出来看一看,为什么会失败呢。怎么了?他说发生了一个空指针异常,说怎么了?说不能够去创建nt man factory,为什么呢?在这啊,我们使用map by进行映射的话。这个时候。不能够怎么啦?这个时候就不能够再定义这个join column了,是吧,这个时候我使用我使用map by,那你就别定义它了。再看效果。走起。过了看这个时候没有额外的update,看见了吧?
09:01
过来这里边我们说说呀,注意注意。洛在一的一端的at to中使用map败属性,则。To端就不能。在使用。不能使,不能再使用什么,不能再使用转属性,因为这块的话呢,已经非常清楚的都说了是吧,这个时候什么呢,不能够再定义了,再定义的话那就出错了,嗯,这就是我们这块需要注意的一个细节。
10:09
过来。好。其他的没什么,其他的那个双向关系跟我们前边讲的两个单项里面都会找到对应的这个技术点,其他的我们就不说了,我们在映射双向一对多或双向多对一关联关系的时候,只需要注意这块的这个什么呀,叫。Map by mapped by,用谁来帮我映射?看见了吧,用谁呢?Map by用。用order的customer帮我映射。Map的buy。这么写是吧,CTRLC。
11:00
这样的话呢,我们关于这个双向一对多就OK了。
我来说两句