고려사항 3가지
1. 다중성 (@OneToMany, @ManyToOne, @OneToOne, @ManyToMany)
2. 단방향, 양방향
3. 연관관계의 주인
package jpabook.jpashop.domain;
import javax.persistence.*;
import java.util.ArrayList;
@Entity
public class Member {
@Id @GeneratedValue
@Column(name = "MEMBER_ID")
private Long id;
@Column(name = "USERNAME")
private String name;
@ManyToOne
@JoinColumn(name = "TEAM_ID") // 우선 ManyToOne 그러니까
//Member가 여러명이고 그 여려명이 Team에 소속됨.
private Team team;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
@Override
public String toString() {
return "Member{" +
"id=" + id +
", name='" + name + '\'' +
", team=" + team +
'}';
}
}
package jpabook.jpashop.domain;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
public class Team {
@Id @GeneratedValue
@Column(name = "TEAM_ID")
private Long id;
private String name;
@OneToMany(mappedBy = "team") // Member에서 연결해야 되는 변수명 그대로 선언
private List<Member> members = new ArrayList<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
일대다 단방향은 추천하지 않고 실무에서도 거의 쓰지 않는단다!
다만 지원해주기에 그냥 우선 본다
웃긴게 Team Table에 있는것을 관리하는데 MEMBER가 변경됨
그러면 어? 나는 Team에 건드렷는데 왜 Member table 에 update문이 나가지? 하는거임
그래서 Member에 단방향을 추가해서 양방향으로 변경한다고 한다.
'Spring' 카테고리의 다른 글
9. 스프링 / 2021-07-18 (Mapped Superclass ~ ) (0) | 2021.07.18 |
---|---|
8. 스프링 / 2021-07-18 (다대다 [N:M]) (0) | 2021.07.18 |
6. 스프링 공부 / 양방향 연관관계와 연관관계의 주인 (0) | 2021.07.15 |
5. 스프링 공부 / 2021-07-15 (단방향 연관 관계) (0) | 2021.07.15 |
4. 스프링 공부 / 2021-07-14 (실전1 - 요구사항 분석과 기본 매) (0) | 2021.07.14 |