

이러한 테이블을 만든다고 치면 관계는 어떻게 되는가.

후라이트 치킨을 여러사람이 주문하게 되었을 떄 불필요하게 음식의 이름이 중복되는 문제가 발생.

그래서 이러한 관계를 풀어주기 위해 주문(Order) 라는 테이블을 하나더 추가해주는 방식.
DB 테이블들간의 관계에서 방향의 개념은 존재 하지 않는다.
방향에는 크게 단방향과 양방향을 생각해 볼 수 있다.
예를 들어 단방향은 users 테이블에서만 food 테이블을 참조할 수 있을 때를 의미 한다.
양방향은 users 테이블과 food 테이블이 서로를 참조할 수 있을 때를 의미 한다.
이렇지만 어떤 테이블을 기준으로 하든 원하는 정보를 Join 을 통해 조회할 수 있다.
그렇다면 JPA Entity 에서는 이러한 테이블간의 연관 관계를 어떻게 표현하고 있을까?
@Entity
@Table(name = "food")
public class Food {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
}
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "user")
private List<Food> foodList = new ArrayList<>();
}
List<Food> foodList = new ArrayList<>() 이처럼 표현할 수 있다.@Entity
@Table(name = "food")
public class Food {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
}
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}