Entity: Entity => 외래키의 주인이 되는 Entity: 다른 Entity
종류는 4가지가 있고 거기서 또 단방향, 양방향으로 나눠 볼 수 있다.
@OneToMany
* 주인인 Entity =>Food
@Entity
@Table(name = "food")
@OneToMany
@JoinColumn(name = "food_id") => users 테이블에 food_id 컬럼
private List<User> userList = new ArrayList<>();
=> ToMany로 끝나는 경우는 List를 사용
* 다른 Entity => User
@Entity
@Table(name = "users")
private Long id;
private String name;
@ManyToMany
= N 대 M의 경우 중간 테이블을 생성
* 주인인 Entity =>Food
@Entity
@Table(name = "food")
@ManyToMany
@JoinTable(name = "orders", => 중간 테이블 생성
joinColumns = @JoinColumn(name = "food_id"),
inverseJoinColumns = @JoinColumn(name = "user_id"))
private List<User> userList = new ArrayList<>(); => ToMany 이기 때문에 List
* joinColumns, inverseJoinColumns을 사용하여 order 테이블 join
=> joinColumns: Food Entity 에서 order 테이블로 조인할 컬럼 설정
=> inverseJoinColumns : User Entity 에서 order 테이블로 조인할 컬럼 설정
* 다른 Entity => User
@Entity
@Table(name = "users")
private Long id;
private String name;
* 주인인 Entity =>Food
@Entity
@Table(name = "food")
** 단방향과 동일
@ManyToMany
@JoinTable(name = "orders", => 중간 테이블 생성
joinColumns = @JoinColumn(name = "food_id"),
inverseJoinColumns = @JoinColumn(name = "user_id"))
private List<User> userList = new ArrayList<>(); => ToMany 이기 때문에 List
* joinColumns, inverseJoinColumns을 사용하여 order 테이블 join
=> joinColumns: Food Entity 에서 order 테이블로 조인할 컬럼 설정
=> inverseJoinColumns : User Entity 에서 order 테이블로 조인할 컬럼 설정
* 다른 Entity => User
@Entity
@Table(name = "users")
private Long id;
private String name;
@ManyToMany(mappedBy = "userList") => Food class에서 선언한 List를 가져옴
private List<Food> foodList = new ArrayList<>();