我对建模Java类的最佳做法以及如何在数据库中将它们联系起来有一个疑问。我在项目中使用 Spring-Boot 和 Spring-Data
我遇到的情况包括专业的行政,专业财务和专业开发人员。他们每个人都有自己的特点。
因此,我创建了一个由所有员工通用的attibutos组成的Professional类:
专业课
@Entity
@Table(name = "Professional")
@Inheritance(strategy = InheritanceType.JOINED)
public class Professional {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String age;
... getters e setters
}
其他班级,是专业班级的延伸:
管理阶层
@Entity
public class Administrative extends Professional {
private String attribute1;
private String attribute2;
... getters e setters
}
金融类
@Entity
public class Financial extends Professional {
private String attribute1;
private String attribute2;
... getters e setters
}
开发人员类
@Entity
public class Developer extends Professional {
private String attribute1;
private String attribute2;
... getters e setters
}
这是处理这种情况的最合适方法吗?我应该使用类组成而不是继承吗?您能分享一些例子吗?
谢谢
答案 0 :(得分:0)
继承在这里更有意义。例如,在实体有另一个实体(例如
class Adult extends Person {
private List<Animal> pets; // person HAS pets (with are another class)
private ID identityCard; // person HAS an identity card
}
在这里,一个人扩展Animal
或ID
中的任何一个都是没有意义的,因为它们不是二者之一。但是,它们是Person
类的子类,因此可以继承。
在您的情况下,继承是有意义的,因为子类 是Professional的子集。您不会说开发人员拥有专业人士,但是他们是专业人士。