我们有一个微服务将部署在两个不同的环境(A和B)中。 有一些共同的领域,也有一些特定于环境的。
示例:
环境SomeEntity
的 A
仅具有name
和age
及其validation
。
环境k的SomeEntity
仅具有dept
和experience
及其validation
。
在两种环境中都有一些共同的字段。
我们不想为两个环境都创建两个不同的实体,因为只有2-3个特定于该环境的字段,而23-25个字段是常见的。
实际上,我们正在寻找可以最佳处理这种情况的design pattern
或tool
或Hibernate
或Spring framework
中的任何内置功能。
有人可以指导解决这种情况的最佳方法吗?
答案 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;
}