JPA在没有直接关系的实体之间分配数据

时间:2016-12-15 09:52:26

标签: java hibernate jpa

在我的应用程序中,用户有很多字段,因此我决定将其与一对一实体分开。这是一个例子:

diagram 1

但后来我意识到有时我需要从没有关系的实体获取数据。例如,有时我必须使用BankCustomer加载Worker(所有关系都是懒惰的)但我不需要Person。使用图表中显示的模型,我必须加载BankCustomer,然后离开加入提取Person,然后离开加入提取Worker。所以我有了这个想法:

diagram 2

现在所有实体都与其他实体有关系。我也得到一对一的关系有一个共享的主键。因此,不需要为每个关系创建另一个外键 使用这种模型,它还可用于创建具有所有类型关系的网络,以便: diagram 3
将成为这样: diagram 4
因此,如果我需要从Authorities获取Restriction,我就不必提取我甚至不需要的UserUserInfo
所以这是我的问题:

  1. 是否可以实现(使用Hibernate作为提供者)?
  2. 这是个好主意吗?
  3. 您如何处理此类设计问题?

1 个答案:

答案 0 :(得分:1)

回答点 1

为什么不呢,因为Hibernate和JPA有助于实现你在RDBMS中实现的任务,它应该是可行的。

试试吧。

回答 2

不确定这一点,取决于很多因素。

使用由类型确定的继承关系来解决Person,BankCustomer和Worker。

只需查看Inheritance mapping

当您尝试在db session上创建或更新实体时,有太多的关系可能会让您陷入编码部分。

如果您需要很少的信息,那么您不需要在数据库上建立关系,而只需编写一个特定的 HQL 即可。

回答 3

这实际上取决于你的具体情况。

不仅仅是模型,还有您拥有的数据量,工作类型,例如,如果您只编写一次并阅读许多内容,或者您​​经常写作。

还有很多其他事情。

您应该提供一个更具体的案例来获得答案。