知识卡片
双向关联需要一个权威端
内容
当两个对象通过一张连接表建立多对多或一对多关联、且两边都想通过属性互相导航到对方时, 底层数据(连接表里的行)只有一份,但对象层面却有两个可以被修改的入口,这就产生了”改 哪一边才算数”的歧义。解决办法是显式指定其中一端为”反向”(inverse)——只有另一端(权威 端)的集合变化才会被同步写回数据库,反向端的修改在对象内存里可见,但不会持久化。发 散:这本质上是”单一数据源”(single source of truth)原则在双向关联场景下的应用——双 向关联提供的是两个读取入口,但只能有一个写入入口,否则两份状态就有分裂的风险。这个道 理不限于ORM,任何双向绑定的数据结构(比如双向链表、UI双向绑定)都要面对同样的取舍。
参考来源
《精通Hibernate》第4章《使用双向关联》