본문으로 바로가기

다양한 연관관계 매핑

category Spring/Spring JPA 2024. 3. 16. 23:25

연관관계 매핑시 고려사항 3가지

  1. 다중성
    • 다대일 : @ManyToOne
    • 일대다 : @OneToMany
    • 일대일 : @OneToOne
    • 다대다 : @ManyToMany - 실무에서 쓰면 안되는거
  2. 단방향, 양방향
    • 테이블
      • 외래 키 하나로 양쪽 조인 가능
      • 사실 방향이라는 개념이 없음
    • 객체
      • 참조용 필드가 있는 쪽으로만 참조 가능
      • 한쪽만 참조하면 단방향
      • 양쪽이 서로 참조하면 양방향
  3. 연관관계의 주인
    • 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음
    • 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데
    • 객체 양방향 관게는 참조가 2군데 있음. 둘중 테이블의 외래 키를 관리할 곳을 지정해야함
    • 연관관계의 주인 : 외래 키를 관리하는 참조
    • 주인의 반대편 : 외래 키에 영향을 주지 않음, 단순 조회만 가능

강의 내용이 너무 많아서 5개로 나눠 정리함

 

다대일 [N:1] 

  • 다(N) 쪽에 항상 외래키가 들어가야됨 , 다 부분이 연관관계의 주인임!!
  • 가장 많이 사용하는 연관관계!!
  • 다대일의 반대는 일대다

예제

Member.java

public class Member {
    @Id @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;

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

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

 

Team.java

public class Team {
    @Id
    @GeneratedValue
    @Column(name = "TEAM_ID")
    private Long id;

    private String name;
}

 

다대일 양방향

  • 외래 키가 있는 쪽이 연관관계의 주인
  • 양쪽을 서로 참조하도록 개발

 

Team.java 에 추가 될 컬럼

@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();

 

  • team 이라는 것에 의해 매핑 되어있다~ 라는 의미임 

 

 

'Spring > Spring JPA' 카테고리의 다른 글

다양한 연관관계 매핑 : 일대일  (0) 2024.03.18
다양한 연관관계 매핑 : 일대다 [1:N]  (0) 2024.03.18
실습 - 연관관계 매핑 시작  (0) 2024.03.16
연관관계 매핑 기초  (0) 2024.01.28
엔티티 매핑  (0) 2024.01.01