项 1:如何高效使用 @OneToMany 关联
在领域模型中,双向 @OneToMany 估计是最常见到的关联。
下面两个实体,Author 和 Book 使用的就是双向延迟 @OneToMany 关联。

author 表对 book 表的关系是 @OneToMany。表 author 中一行可以被表 book 中多行引用。author_id 列通过外键引用 author 表中主键来映射这样的关系。一本书在不关联作者的情况下是不会存在的,因此 author 是父级一方(@OneToMany),而 book 是子级一方(@ManyToOne)。@ManyToOne 用于负责在持久化上下文中同步外键列(一级缓存)。
永远从父级一方级联到子级一方#
caution
在这种上下文中,永远不要在 @ManyToOne 上使用 CascadeType.*,因为实体状态应该是从父级一方传播到子级一方的。
不要忘记在父级一方设置 mappedBy#
mappedBy 属性用于标示双向关联,并且必须设置在父级一方。换句话说,双向 @OneToMany 关联,是通过在父级一方的 @OneToMany 中设置 mappedBy 以及在子级一方被 mappedBy 引用的地方添加 @ManyToOne 实现的。
在父级一方设置 orphanRemoval#
在父级一方设置 orphanRemoval 会保证子级在缺失父级引用时会被删除掉。