lazy与inverse

lazy,就是延时加载。
以最简单的parent和child为例子:一个parent可以有多个child,一个child只有一个parent。
当parent类的child属性的lazy为true,那么当select parent的时候,他的child不会马上被select,一直延迟到他的child需要被读写的时候再去select。
当parent类的child属性的lazy为false,那么select parent的时候,他的child会马上被select。


inverse,用于外键维护的控制。
当inverse为false,则在插入表数据之后,会再插入外键维护的记录。
当inverse为true,则在插入表数据的同时,插入外键维护的记录。

在非多对多的表关系中:
还是以parent和child为例子。假设1个parent有3个child,那么:
当inverse为false,则先insert 1 条 parent,再insert 3 条 child,再insert 3 个child的parent ID,一共7次insert。
当inverse为true,则先insert 1 条 parent,再insert 3 条 child,当然这3次insert是同时完成插入parent ID的,所以一共4次insert。
总结:在非多对多的表关系中,inverse永远为ture。

在多对多的表关系中:
中间表的外键维护通常由一方进行维护。
所以2个多方,1个inverse为ture,1个inverse为false。中间表会由inverse为false的一方维护。
总结:选择数据比较多的一方维护中间表的效率会比较高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值