티스토리 뷰

[개발] - Spring/JPA 공부

다대일 [N : 1]

완벽한 장면 2023. 8. 20. 01:58

다대일 단방향

  • MEMBER 입장에서 TEAM_ID는 이걸 통해 TEAM으로 찾아가기 위한 것이고,
  • 같은 레벨로 (객체)Member에서 Team team 이라는 참조값도 동일한 의미.

 

다시 예시

앞에 했던 것들은 커밋 기록 남아있으니까 꽤 지우고

 

Member

@Entity
@NoArgsConstructor
public class Member {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "MEMBER_ID")
  private Long id;

  @Column(name = "USERNAME")
  private String username;

  @ManyToOne
  @JoinColumn(name = "TEAM_ID")
  private Team team;


  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public Team getTeam() {
    return team;
  }

}

 

Member 에서 Team으로 가고 싶으면,

  @ManyToOne
  @JoinColumn(name = "TEAM_ID")
  private Team team;

 

TEAM_ID 라는 외래키랑 매핑할 거라고 적어주면 된다.

 

 

Team은 Member로 가고자 하는 의지가 없기 때문에 그냥 두면 됨.

@Entity
public class Team {

  @Id
  @GeneratedValue
  @Column(name = "TEAM_ID")
  private Long id;

  private String name;


  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;
  }
}

 

이게 바로 다대일 단방향 관계

 

정리하자면

- 가장 많이 사용하는 연관관계

- 다대일의 반대는 일대다


다대일 양방향

 

 

 

추가한 부분

@Entity
public class Team {

  @Id
  @GeneratedValue
  @Column(name = "TEAM_ID")
  private Long id;

  private String name;

  // 양방향으로 만들기 위해 추가할 것
  @OneToMany(mappedBy = "team")
  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;
  }
}

 

 

정리하자면

- 외래 키가 있는 쪽이 연관관계의 주인

- 양쪽을 서로 참조하도록 개발

728x90
반응형

'[개발] - Spring > JPA 공부' 카테고리의 다른 글

일대일 [1 : 1]  (0) 2023.08.21
일대다 [1 : N]  (0) 2023.08.20
다양한 연관관계 매핑 도입  (0) 2023.08.20
실전 예제 - 2. 연관관계 매핑 시작  (0) 2023.08.19
양방향 연관관계와 연관관계의 주인  (0) 2023.08.19
Comments
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
250x250