是否值得@OneToMany
在收藏价值协会中使用与“非常多”方的关系?
当我们只有很少的实例或严格的逻辑关系时,例如List<OrderLine>
inOrder
或Set<Phone>
in Person
,很明显我们会这样做。但是当涉及到保存许多实例时,如Set<Order>
inCustomer
或List<Event>
in Company
,一个简单的操作如Order#setCustomer()
orEvent#setCompany()
要求整个元素集合由持久性上下文管理。是不是太贵了?或者在这些情况下应该避免双向关系吗?
相应的部分是这些关系的级联设置。将/的合并/持久功能级联到它的“孩子”是合乎逻辑Customer
的Company
,但最终不会浪费资源吗?
最后但并非最不重要的是级联删除。它显然非常适合所有四种关系。但是,如果我们留下单值关联的单向关系,那么我们必须在删除父项时使用查询单独删除子项吗?
现在,我仅在项目数量非常少并且实体之间存在明确的父子关联时才使用双向关系。大部分工作是通过单值端(单独删除Order
/ Entity
)以及在删除父级后(删除 / 时)通过查询完成Customer
的Company
。
在重读了一些关于 JPA 的书籍后,我开始认为我可能没有遵循在 Java EE 应用程序中使用持久性的正确方法。
一般而言,您对在 Java EE 应用程序中使用与集合中的许多实例的双向关系有何看法?如果您特别选择单向关系,您将如何管理级联?