TIL)23.06.23_Entity간의 연관 관계(2)

주민·2023년 6월 25일
0

TIL

목록 보기
25/84

TIL)23.06.22_Entity간의 연관 관계

Entity: Entity => 외래키의 주인이 되는 Entity: 다른 Entity
종류는 4가지가 있고 거기서 또 단방향, 양방향으로 나눠 볼 수 있다.

1 대 N

@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;
  • 양방향
    양방향 관계가 존재하지 않음
    -> user class 입장에서 @ManyToOne 애너테이션으로 mappedBy을 사용해야하지만 @ManyToOn에서는 mappedBy을 제공하지 않음
    -> 다만, 다른 방법으로 양방향으로 할 수는 있음

N 대 M

@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<>();    

0개의 댓글

관련 채용 정보