JPA中的继承与组合

时间:2019-07-04 09:32:04

标签: jpa inheritance composition

旧版应用程序持久性基于JPA。有一个实体People映射到数据库表 People 。 现在,“人员”中所有行的子集都需要一些其他字段。 一种可能的解决方案是使用jpa继承并创建一个新实体,假设 EmployeedPeople 扩展了 People

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class People {

...

@Entity(name = “EmployeedPeople”)
public class EmployeedPeople extends  People {

或者我可以使用单向一对一关系

@Entity(name = “EmployeedPeople”)
public class EmployeedPeople {
...
@OneToOne(optional = false)
private People commonPersonData;

我也考虑了第三种方式:新实体基于将 People 表与 EmployeedData 表联接的数据库视图。 最后一种方法适合读取 EmployeedPeople ,但由于我必须使用不同的实体( People EmployeedData )来进行插入和更新,因此不切实际。 / p>

哪些标准可以帮助选择策略? 每个解决方案的优缺点是什么?

在互联网上,我已经找到了以下compares the inheritance strategies和这本on composition的指南,但是我的想法还不清楚。

0 个答案:

没有答案