새소식

xub2의 개발 새발 🐾
💽 Database/JPA

[JPA] 연관관계 매핑 - 4 : 다대일 연관관계 [N:1]

2025. 9. 15. 21:31

  • -

기본적으로 연관 관계는 3가지를 고려 해야한다. -> 다중성, 단방향과 양방향, 연관관계 주인


다대일 단방향

예시를 보자.

여러명의 회원은 하나의 팀에 소속된다. 그리고 반대로 하나의 팀에 여러 멤버가 소속될 수 있다. (N:1)

항상 DB에선 N쪽에 외래키가 존재한다. (반대에 있으면 정규형이 깨지기 때문에 당연히 안됨)

위 예시는 Member 엔티티가 주인이기 때문에, Member 엔티티가 Team을 가지고 있다.

 


다대일 양방향

@Entity
@Getter @Setter
public class Team {

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

    private String name;

    @OneToMany(mappedBy = "team") // 저는 team 컬럼에 의해 관리되는 필드입니다.
    private List<Member> members = new ArrayList<>();

}

다대일 양방향 관계는 Team에서도 Member을 조회하기 위해 양방향 참조를 가지고 있는 형태이다.

하지만 연관관계의 주인은 Member이기 때문에, Team엔티티에서 member 데이터를 변경한다고 해서 물리 DB에 반영이 되진 않는다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.