在Hibernate中处理环境规范字段的最佳方法

时间:2018-08-08 06:03:19

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

我们有一个微服务将部署在两个不同的环境(A和B)中。 有一些共同的领域,也有一些特定于环境的。

示例:

环境SomeEntity

A仅具有nameage及其validation。 环境k的SomeEntity仅具有deptexperience及其validation

在两种环境中都有一些共同的字段。

我们不想为两个环境都创建两个不同的实体,因为只有2-3个特定于该环境的字段,而23-25个字段是常见的。

实际上,我们正在寻找可以最佳处理这种情况的design patterntoolHibernateSpring framework中的任何内置功能。

有人可以指导解决这种情况的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

要重用共享公共字段的实体,例如可以使用@javax.persistence.MappedSuperclass

  

指定一个类,将其映射信息应用于   从其继承的实体。映射的超类没有单独的   为其定义的表。

示例:

@MappedSuperclass
public class BaseSomeEntity {

    @Id protected Integer id;
    @Column private String validation;
    //and your other 25 common fields
}


@Entity
public class SomeEntityEnvA extends BaseSomeEntity {
    @Column private String name;
    @Column private String age;
}

@Entity
public class SomeEntityEnvB extends BaseSomeEntity {
    @Column private String dept;
    @Column private String experience;
}