我试图在另一个项目的数据库之上构建一个Spring Boot数据层。我想通过Restful端点而不是直接从数据库中获取数据。最大抽象是目标。这是我的问题。考虑以下JPA实体:
@Entity
@Table(name = "PERSON", schema = "public")
public class Person {
@Id private long id;
private String name;
private long favoriteFood;
private Address address;
//Getters, Setter etc.....
}
请注意,favoriteFood是一个long,而不是String。这是因为DB使用查找表。让我们说乔最喜欢的食物是披萨。 person表在favorite_food列中存储1,该列是" pizza"存储在food_ref表中的值。该模式在DB中重复数百次或数次。在JPA / Hibernate中对此进行建模的最佳方法是什么?将变量更改为String并让getter和setter执行查找?我没有找到任何看似奇怪的例子。这是一种常见的DB结构。任何有关最佳实践的建议都将受到赞赏。谢谢!
答案 0 :(得分:0)
此方案中最好的方法是在JPA实体中使用一对一关系与FoodRef类
@Entity
@Table(name = "PERSON", schema = "public")
public class Person {
@Id private long id;
private String name;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="food_ref_id")
private FoodRef favoriteFood;
private Address address;
//Getters, Setter etc.....
}