使用Hibernate建模Java类的最佳实践是什么?

时间:2019-04-10 17:47:41

标签: java spring spring-boot spring-data-jpa spring-data

我对建模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
}

这是处理这种情况的最合适方法吗?我应该使用类组成而不是继承吗?您能分享一些例子吗?

谢谢

1 个答案:

答案 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
}

在这里,一个人扩展AnimalID中的任何一个都是没有意义的,因为它们不是二者之一。但是,它们是Person类的子类,因此可以继承。

在您的情况下,继承是有意义的,因为子类 是Professional的子集。您不会说开发人员拥有专业人士,但是他们专业人士。